Git版本控制实战:团队协作必备的10个核心工作流

Git已经成为现代软件开发的标准工具。本文将介绍10个实用的Git工作流,帮助你和团队更高效地协作。

1. 基础配置

# 全局配置
git config --global user.name "Your Name"
git config --global user.email "[email protected]"
git config --global core.editor vim
git config --global init.defaultBranch main

# 查看配置
git config --list

2. 初始化与克隆

# 初始化仓库
git init my-project
cd my-project

# 克隆远程仓库
git clone https://github.com/user/repo.git
git clone -b dev https://github.com/user/repo.git  # 克隆指定分支

3. 基本工作流

# 查看状态
git status

# 添加文件
git add file.txt              # 添加单个文件
git add .                     # 添加所有修改

# 提交
git commit -m "feat: add login feature"
git commit -am "fix: resolve bug"  # 跳过add(仅限已跟踪文件)

# 推送
git push origin main

4. 分支管理策略

Git Flow工作流

# 主分支
main/master       - 生产环境代码
develop           - 开发分支

# 辅助分支
feature/*         - 新功能
release/*         - 发布准备
hotfix/*          - 紧急修复

常用分支操作

# 创建并切换分支
git checkout -b feature/user-auth
git switch -c feature/user-auth  # Git 2.23+

# 切换分支
git switch main
git checkout main

# 查看所有分支
git branch -a

# 删除分支
git branch -d feature/old-feature
git branch -D feature/old-feature  # 强制删除

5. 合并与变基

Merge合并

git merge feature/login
git merge --no-ff feature/login  # 禁用快进,保留合并记录

Rebase变基

git rebase main
git rebase -i HEAD~3  # 交互式变基,修改提交历史

建议:团队协作使用Merge,个人分支可以使用Rebase保持历史整洁。

6. 冲突解决

# 当合并出现冲突时
git status  # 查看冲突文件

# 手动编辑冲突文件,解决冲突标记
<<<<<<< HEAD
当前分支内容
=======
要合并的分支内容
>>>>>>> feature/login

# 标记为已解决
git add conflicted-file.txt
git commit -m "fix: resolve merge conflict"

7. 远程仓库操作

# 添加远程仓库
git remote add origin https://github.com/user/repo.git

# 查看远程仓库
git remote -v

# 拉取远程更新
git pull origin main
git fetch origin  # 仅获取,不合并

# 推送标签
git tag v1.0.0
git push origin v1.0.0

# 删除远程分支
git push origin --delete feature/old

8. 撤销操作

# 撤销工作区修改
git checkout -- file.txt

# 撤销暂存
git reset HEAD file.txt

# 撤销提交(保留修改)
git reset --soft HEAD~1

# 撤销提交(丢弃修改)
git reset --hard HEAD~1

# 撤销公共提交(慎用)
git revert HEAD  # 创建新提交撤销

9. 标签管理

# 创建标签
git tag v1.0.0
git tag -a v1.0.0 -m "Release 1.0.0"

# 查看标签
git tag
git show v1.0.0

# 删除标签
git tag -d v1.0.0
git push origin --delete v1.0.0

10. 实用技巧

查看提交历史

git log --oneline --graph --all
git log --author="John" --since="2024-01-01"
git log -p file.txt  # 查看文件修改历史

暂存工作区

git stash
git stash pop
git stash list

批量重命名

git filter-repo --path-rename old/:new/

查找包含特定内容的提交

git log -S "function_name" --oneline

团队协作最佳实践

  1. Commit Message规范:使用Conventional Commits(feat/fix/docs等)
  2. 小步提交:每个提交只做一件事
  3. 频繁拉取:每天至少pull一次,减少冲突
  4. 代码审查:使用Pull Request进行Code Review
  5. 保护主分支:main分支禁止直接push,必须通过PR

Conventional Commits规范

<type>[optional scope]: <description>

[optional body]

[optional footer(s)]

# 示例
feat: add user authentication
fix: resolve login timeout issue
docs: update installation guide
style: format code with black
refactor: simplify database queries
test: add unit tests for auth module
chore: update dependencies

.gitignore最佳实践

# 依赖
node_modules/
vendor/
venv/

# 构建输出
dist/
build/
*.o

# 系统文件
.DS_Store
Thumbs.db

# IDE
.vscode/
.idea/
*.swp

# 日志
*.log
logs/

总结

掌握这些Git工作流,可以显著提升团队协作效率:

  • 单人项目:简单的工作流即可
  • 小团队:GitHub Flow(main+feature分支)
  • 中大型团队:Git Flow或Trunk-Based Development
📖 推荐工具:SourceTree、GitKraken、VS Code Git插件可以简化Git操作。深入学习可参考《Pro Git》电子书。

发表评论