Git 中级实战指南
高效协作与代码管理
一、核心工作流模型
Git Flow 标准流程
- 主分支:
main(稳定版)、develop(开发版) - 辅助分支:
feature/*:功能开发(如feature/user-login)hotfix/*:紧急修复(如hotfix/pay-bug)release/*:预发布准备
- 操作示例:
1
2
3
4# 创建功能分支
git checkout -b feature/new-feature
# 开发完成后合并到 develop
git checkout develop && git merge feature/new-feature
- 主分支:
GitHub Flow 简化版
- 直接在
main分支开发,通过 Pull Request 合并 - 适用:小团队快速迭代
- 直接在
二、高阶命令与场景
| 场景 | 命令/操作 | 作用 |
|---|---|---|
| 精准提交 | git add -p → 交互式选择代码块暂存 |
将大修改拆分为多个逻辑提交 |
| 历史重构 | git rebase -i HEAD~3 |
合并/修改/删除最近3次提交 |
| 跨分支移植 | git cherry-pick <commit> |
选择性应用特定提交到当前分支 |
| 紧急恢复 | git reflog → git reset --hard <id> |
找回误删提交或回退到任意历史状态 |
| 冲突解决进阶 | git mergetool 集成 Beyond Compare |
可视化解决复杂冲突 |
三、协作开发全流程
克隆与同步
1
2
3git clone git@github.com:user/repo.git
git fetch origin # 同步远程分支列表
git pull origin main # 拉取并合并远程主分支分支协作策略
- 开发新功能:
1
2git checkout -b feature/auth
# 开发完成后发起 Pull Request - 修复线上问题:
1
2
3git checkout -b hotfix/crash
git push origin hotfix/crash
# 创建 Pull Request 合并到 main
- 开发新功能:
Rebase 与 Merge 对比
- Rebase:线性化历史(适合个人分支)
1
2git checkout feature
git rebase main # 将 feature 分支基于最新 main 重写历史 - Merge:保留分支拓扑(适合团队协作)
- Rebase:线性化历史(适合个人分支)
四、问题解决实战
冲突解决四步法
- 步骤1:
git pull触发冲突 - 步骤2:
git diff查看冲突文件 - 步骤3:手动编辑文件 → 删除
<<<<<<</=======/>>>>>>> - 步骤4:
git add <file>→git commit
- 步骤1:
误删分支恢复
1
2git reflog # 查找分支最后提交的 commit ID
git checkout -b restored-branch <commit-id>撤销错误提交
1
2git revert <bad-commit> # 生成新提交反向抵消
git reset --soft HEAD^ # 仅回退提交(保留修改)
五、效率优化技巧
部分克隆(节省带宽)
1
git clone --filter=blob:none git@github.com:user/repo.git
稀疏检出(仅拉取必要文件)
1
git sparse-checkout set src/ # 仅检出 src 目录
别名配置(提升效率)
1
2git config --global alias.lg "log --graph --oneline"
git config --global alias.co "checkout"
六、附:Git 命令速查表
| 分类 | 常用命令 |
|---|---|
| 分支管理 | git branch -d <branch>(删除已合并分支) |
| 远程操作 | git remote prune origin(清理无效远程分支) |
| 历史查看 | git log --author=<name>(按作者过滤提交) |
| 子模块 | git submodule update --recursive |
学习路径建议:
- 先掌握 Git Flow:规范分支管理,避免协作混乱
- 熟练 Rebase 与 Cherry-pick:提升历史管理能力
- 配置个性化工具链:如 Git Hooks 自动化检查