Git 工作流完全指南
概述
Git 是现代软件开发中不可或缺的版本控制工具。本文将介绍 Git 高级操作,详解 Git Flow、GitHub Flow 等工作流,帮助团队提升协作效率。
Git 基础回顾
核心概念
工作区 (Working Directory)
↓ git add
暂存区 (Staging Area)
↓ git commit
本地仓库 (Local Repository)
↓ git push
远程仓库 (Remote Repository)基础命令
bash
# 初始化仓库
git init
# 克隆仓库
git clone <url>
# 添加文件到暂存区
git add <file>
git add .
# 提交更改
git commit -m "message"
# 查看状态
git status
# 查看提交历史
git log分支管理
创建与切换分支
bash
# 创建新分支
git branch feature/login
# 切换分支
git checkout feature/login
# 创建并切换(简写)
git checkout -b feature/login
# 使用 switch(现代方式)
git switch -c feature/login合并分支
bash
# 普通合并
git checkout main
git merge feature/login
# 快进合并(无冲突)
# Git 直接移动指针
# 三方合并(有冲突)
# Git 需要手动解决冲突删除分支
bash
# 删除已合并的分支
git branch -d feature/login
# 强制删除分支
git branch -D feature/login
# 删除远程分支
git push origin --delete feature/loginGit Flow 工作流
分支模型
master (生产环境)
↑
|
release/1.0
↑
|
develop (开发主分支) ←←←←←←←←←←←←←←←←←←←←←←←←←←
↑ ↓
| |
hotfix/1.0.1 feature/user-auth
↑ ↓
| |分支类型
| 分支 | 用途 | 命名规则 |
|---|---|---|
| master | 生产环境 | master/main |
| develop | 开发主分支 | develop |
| feature | 功能开发 | feature/* |
| release | 发布准备 | release/* |
| hotfix | 紧急修复 | hotfix/* |
完整流程
bash
# 1. 从 develop 创建功能分支
git checkout -b feature/user-auth develop
# 2. 开发完成后,合并到 develop
git checkout develop
git merge --no-ff feature/user-auth
# 3. 删除功能分支
git branch -d feature/user-auth
# 4. 创建发布分支
git checkout -b release/1.0 develop
# 5. 发布后合并到 master 和 develop
git checkout master
git merge release/1.0
git tag -a v1.0 -m "版本 1.0"
git checkout develop
git merge release/1.0
# 6. 删除发布分支
git branch -d release/1.0GitHub Flow
适用场景
- 持续部署的项目
- 团队规模较小
- 无多版本并行开发需求
流程
bash
# 1. 创建特性分支
git checkout -b feature/dark-mode
# 2. 开发并提交
git commit -m "添加深色模式支持"
# 3. 推送分支
git push -u origin feature/dark-mode
# 4. 创建 Pull Request
# 5. 代码审查后合并
# 通过 GitHub 界面合并
# 6. 删除分支
git branch -d feature/dark-mode
git push origin --delete feature/dark-mode高级操作
变基 (Rebase)
bash
# 变基到主分支
git checkout feature/login
git rebase main
# 解决冲突后继续
git rebase --continue
# 中止变基
git rebase --abort
# 交互式变基(修改提交历史)
git rebase -i HEAD~3暂存 (Stash)
bash
# 暂存当前更改
git stash
git stash save "WIP: 新功能开发"
# 查看暂存列表
git stash list
# 应用最新暂存
git stash pop
# 应用指定暂存
git stash apply stash@{0}
# 删除暂存
git stash drop stash@{0}重置 (Reset) 与还原 (Revert)
bash
# 重置到指定提交(修改历史)
git reset --soft HEAD~1 # 保留更改在暂存区
git reset --mixed HEAD~1 # 保留更改在工作区
git reset --hard HEAD~1 # 丢弃更改
# 还原指定提交(安全操作)
git revert <commit-hash>交互式暂存
bash
# 暂存部分文件
git add -p
# 选择性暂存
y - 暂存此区块
n - 不暂存此区块
s - 拆分区块
e - 手动编辑标签管理
bash
# 创建轻量标签
git tag v1.0.0
# 创建附注标签
git tag -a v1.0.0 -m "版本 1.0.0"
# 查看标签
git tag -l
# 推送标签到远程
git push origin v1.0.0
# 推送所有标签
git push origin --tags
# 删除标签
git tag -d v1.0.0
git push origin --delete v1.0.0子模块
bash
# 添加子模块
git submodule add <repo-url> libs/common
# 克隆包含子模块的仓库
git clone --recursive <repo-url>
# 更新子模块
git submodule update --remote libs/common
# 初始化子模块
git submodule init调试技巧
查看谁修改了某行
bash
git blame <file>
git blame -L 10,20 <file>二分查找问题
bash
git bisect start
git bisect bad
git bisect good v1.0.0
# Git 会自动检出中间版本
# 测试后标记 good 或 bad
git bisect reset # 结束隐藏追踪
bash
# 查看差异
git diff
git diff --staged
# 查看简略信息
git diff --stat
# 对比分支
git diff main..feature/login团队协作最佳实践
提交信息规范
<type>(<scope>): <subject>
<body>
<footer>类型说明:
feat: 新功能fix: 修复bugdocs: 文档更新style: 代码格式refactor: 重构test: 测试chore: 构建/工具
分支命名规范
feature/user-auth
feature/shopping-cart
bugfix/login-validation
hotfix/security-patch
release/1.0.0Pull Request 规范
- 保持 PR 小而专注
- 编写清晰的描述
- 关联相关 issue
- 要求代码审查
- 通过所有 CI 检查
常见问题处理
合并冲突
bash
# 解决冲突后
git add <resolved-files>
git commit -m "Merge branch 'feature/login'"撤销 Push
bash
# 使用 revert(安全)
git revert <commit>
git push
# 使用 reset(需谨慎)
git reset --hard <commit>
git push --force清理远程已删除分支
bash
git fetch -p
git branch -vv # 查看追踪状态总结
掌握 Git 工作流能显著提升团队协作效率:
- 选择适合团队规模的工作流
- 养成良好的提交习惯
- 善用分支管理功能
- 熟练使用高级命令
