
关于
掌握高级 Git 技术,维护清晰的提交历史,高效协作,并从任何情况中恢复。
name: git-advanced-workflows description: "掌握高级 Git 技术,保持干净的历史记录,有效协作,并自信地从任何情况中恢复。" risk: critical source: community date_added: "2026-02-27"
Git 高级工作流
掌握高级 Git 技术,保持干净的历史记录,有效协作,并自信地从任何情况中恢复。
不要使用此技能当
- 任务与 Git 高级工作流无关时
- 需要此范围之外的不同领域或工具时
说明
- 明确目标、约束和所需输入
- 应用相关最佳实践并验证结果
- 提供可执行的步骤和验证方法
- 如需详细示例,打开
resources/implementation-playbook.md
何时使用此技能
- 合并前清理提交历史
- 跨分支应用特定提交
- 查找引入 Bug 的提交
- 同时处理多个功能
- 从 Git 错误或丢失的提交中恢复
- 管理复杂的分支工作流
- 为审查准备干净的 PR
- 同步分叉的分支
核心概念
1. 交互式变基
交互式变基是 Git 历史编辑的瑞士军刀。
常见操作:
pick:保持提交不变reword:修改提交信息edit:修改提交内容squash:与前一个提交合并fixup:类似 squash 但丢弃信息drop:完全删除提交
基本用法:
# 变基最近 5 个提交
git rebase -i HEAD~5
# 变基当前分支上的所有提交
git rebase -i $(git merge-base HEAD main)
# 变基到特定提交
git rebase -i abc123
2. Cherry-Pick
从一个分支应用特定提交到另一个分支,无需合并整个分支。
# Cherry-pick 单个提交
git cherry-pick abc123
# Cherry-pick 提交范围(排除起始)
git cherry-pick abc123..def456
# Cherry-pick 不提交(仅暂存更改)
git cherry-pick --no-commit abc123
3. Bisect(二分查找)
使用二分搜索找到引入 Bug 的确切提交。
# 开始 bisect
git bisect start
git bisect bad HEAD
git bisect good v2.1.0
# Git 检出中间提交 - 运行测试
npm test
# 如果测试失败
git bisect bad
# 如果测试通过
git bisect good
自动化 Bisect:
# 使用脚本自动测试
git bisect start HEAD v1.0.0
git bisect run ./test.sh
# test.sh 应在正常时退出 0,异常时退出 1-127(125 除外)
4. Worktrees(工作树)
同时在多个分支上工作,无需 stash 或切换。
# 列出现有工作树
git worktree list
# 为功能分支添加新工作树
git worktree add ../project-feature feature/new-feature
# 添加工作树并创建新分支
git worktree add -b bugfix/urgent ../project-hotfix main
# 删除工作树
git worktree remove ../project-feature
# 清理过期工作树
git worktree prune
5. Reflog(引用日志)
你的安全网——跟踪所有引用移动,包括已删除的提交。
# 查看 reflog
git reflog
# 查看特定分支的 reflog
git reflog show feature/branch
# 恢复已删除的提交
git reflog
# 找到提交哈希
git checkout abc123
git branch recovered-branch
# 恢复已删除的分支
git reflog
git branch deleted-branch abc123
实用工作流
工作流 1:PR 前清理功能分支
# 从功能分支开始
git checkout feature/user-auth
# 交互式变基清理历史
git rebase -i main
# 强制推送清理后的分支(如果没有其他人使用则安全)
git push --force-with-lease origin feature/user-auth
工作流 2:将热修复应用到多个发布版本
# 在 main 上创建修复
git checkout main
git commit -m "fix: critical security patch"
# 应用到发布分支
git checkout release/2.0
git cherry-pick abc123
git checkout release/1.9
git cherry-pick abc123
工作流 3:查找 Bug 引入点
# 自动化版本
git bisect start HEAD v2.1.0
git bisect run npm test
兼容工具
Claude CodeCursor
标签
效率工具
