Git 是现代软件开发的基石。掌握 Git 可以有效管理代码变跟踪、协作开发并保护你的工作成果。本指南将带你从 Git 基础进阶到高级工作流。
第一章:Git基础
理解 Git 的核心概念:
1. 三个区域
工作区、暂存区和仓库区:
- 工作区:实际的文件目录
- 暂存区:保存下次提交的变更集
- 仓库区:本地 .git 目录,存储对象数据库
2. 基本工作流
# 初始化仓库
git init
# 配置用户信息
git config --global user.name "Your Name"
git config --global user.email "you@example.com"
# 查看状态
git status
# 添加文件到暂存区
git add filename.txt
git add . # 添加所有变更
# 创建提交
git commit -m "描述性的提交信息"
第二章:分支与合并
1. 分支管理
分支是指向提交的可移动指针:
# 创建并切换到新分支
git branch feature-new-feature
git checkout feature-new-feature
# 简化操作:创建并切换
git checkout -b feature-new-feature
# 查看所有分支
git branch
# 删除分支(已合并后)
git branch -d feature-new-feature
2. 冲突解决
处理合并冲突的艺术:
- Git 会在冲突标记的文件中插入 <<< >>> 标记
- 手动编辑文件以解决冲突
- 使用图形工具:git difftool 或 IDE 集成
- 解决后重新添加和提交
第三章:高级 Git 操作
1. 重置与恢复
# 软重置 - 保持暂存区不变,移动 HEAD
git reset --soft HEAD~1
# 硬重置 - 丢弃暂存区和工作区的变更
git reset --hard HEAD~1
# mixed重置 (默认) - 重置暂存区,保持工作区
git reset --mixed HEAD~1 # 或简化为 git reset HEAD~1
2. 撤销操作
# 取消暂存的文件
git restore --staged filename.txt # 或 git reset HEAD filename.txt
# 撤销工作区的修改 (恢复到最后一次提交的状态)
git restore filename.txt # 或 git checkout -- filename.txt
# 通过新提交撤销之前的提交
git revert HEAD # 创建一个相反变更的新提交
第四章:远程仓库协作
1. 远程仓库基本操作
# 添加远程仓库
git remote add origin https://github.com/username/repo.git
# 查看远程仓库
git remote -v
# 推送到远程
git push -u origin main # 第一次推送设置上游
git push # 后续推送
# 拉取远程更新
git pull origin main
# 拉取但不合并 (用于检查)
git fetch origin
2. 分支推送与跟踪
# 推送特定分支
git push origin feature-branch
# 建立上游跟踪分支
git push -u origin feature-branch
# 查看分支与远程的关系
git branch -vv
第五章:Git钩子
1. 钩子类型
# 客户端钩子 (在本地执行)
pre-commit # 在提交前运行
pre-push # 在推送前运行
# 服务器端钩子 (在服务器上执行)
receive-push # 在接受推送后运行
pre-receive # 在接受推送前运行
2. 常用钩子示例
# .git/hooks/pre-commit - 在提交前检查代码格式
#!/bin/bash
# 检查是否有 TODO 评论
if git diff --cached | grep -i "TODO"; then
echo "警告:提交中包含 TODO 评论"
exit 1
fi
# 运行格式化工具
npx prettier --write .
git add .
exit 0
第六章:工作流最佳实践
1. Gitflow 工作流
适合有固定发布周期的项目:
- 主分支:main (生产环境)
- 开发分支:develop (开发环境)
- 功能分支:feature/* (功能开发)
- 发布分支:release/* (发布准备)
- 热修复分支:hotfix/* (紧急修复)
2. GitHub Flow
适合持续部署的项目:
- 始终有一个部署可用的 main 分支
- 创建功能分支进行开发
- 提交拉取请求进行代码审查
- 合并到 main 前通过 CI/CD 测试
3. 分支命名规范
# 功能分支
feature/user-login
feature/payment-integration
# 修复分支
bugfix/header-crash
hotfix/security-patch
# release 分支
release/v1.2.0
# hotfix 分支
hotfix/critical-bug
总结
从入门到精通 Git 的路径包括:
- 掌握基础命令和工作流
- 理解分支、合并和冲突解决
- 学习高级操作和撤销技术
- 实践远程协作和工作流模型
- 探索钩子和自动化
记住,Git 不仅仅是一个版本控制工具,它是团队协作的基础设施。掌握良好的 Git 习惯可以避免无数问题,并使团队协作更加顺畅。从今天开始审视你的 Git 使用习惯,应用本指南的原则,让版本控制为你的工作增效。
最重要的原则:提交信息要清晰、有意义;频繁提交;始终在安全分支上操作重要工作。