该技能用于处理 real-world 开发中的高级 Git 操作,超越基础的 add/commit/push。
用途:在合并前清理提交历史(交互式 rebase);定位引入 bug 的提交(bisect);同时处理多个分支(worktree);恢复丢失提交或撤销误操作(reflog);管理跨仓库共享代码(subtree/submodule);解决复杂合并冲突;跨分支或 fork 挑选提交;处理大型 monorepo(稀疏检出)。
主要能力与用法: 交互式 rebase 用 git rebase -i HEAD~5 或 git rebase -i main 打开 pick 列表,支持 pick、reword、edit、squash、fixup、drop;可用 git commit --fixup=<sha> 配合 git rebase -i --autosquash main 自动整理;中断时用 git rebase --abort/--continue/--skip。 bisect 用 git bisect start、git bisect bad、git bisect good <ref> 逐步二分,或用 git bisect start HEAD v1.2.0 与 git bisect run ./test-for-bug.sh 全自动定位;构建失败可 git bisect skip。 worktree 用 git worktree add ../dir <branch> 创建,git worktree list 查看,git worktree remove/prune 清理,适合边保留当前工作边审查 PR 或在 main 上跑测试。 reflog 用 git reflog 查看 HEAD 移动记录,可恢复误 rebase(git reset --hard <sha>)、删除的分支(git branch recovered-branch <sha>)等。 cherry-pick 支持单提交、多提交与范围,冲突后 git add 后 git cherry-pick --continue 或 --abort。 subtree 与 submodule 分别适合共享库/内置代码与独立发布周期的大型依赖。 稀疏检出用 git sparse-checkout init --cone 与 git sparse-checkout set <dir>,大型仓库可配合 git clone --filter=blob:none --sparse。 冲突解决支持 --ours/--theirs、git mergetool、git diff --cc 及 git show :1:/:2:/:3: 查看三方版本;启用 git config --global rerere.enabled true 可复用冲突解决方案。 此外涵盖 stash 常用模式、blame 与 log -S 代码考古、tag 发布管理。
限制与注意:不要 rebase 已推送到共享分支的提交,仅对本地/特性分支 rebase;reflog 通常可恢复 90 天内丢失的提交;除非有明确理由,优先使用 subtree 而非 submodule。以上内容均取自公开技能说明,未提供的内容暂未提供。