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
团队协作最佳实践
- Commit Message规范:使用Conventional Commits(feat/fix/docs等)
- 小步提交:每个提交只做一件事
- 频繁拉取:每天至少pull一次,减少冲突
- 代码审查:使用Pull Request进行Code Review
- 保护主分支: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》电子书。