Git 堆叠提交工作流
将以下提示词粘贴到你的 AI 对话框中:
请根据官方安装指南 https://skillhub.cn/install/skillhub.md,将规范名 @user_3c6cb52e/manage-stacked-commits-repair-commit-graphs-and-sync-branchless-review-flows-with-git-branchless 的技能安装到当前 AI 助手中。
技能介绍
要解决的问题
在传统 Git 分支模型里,功能拆成多个小提交时,要么把每个提交都发到独立分支,要么在共享分支上不断 rebase,导致提交图被压平、父提交关系丢失。评审者很难看出“这个提交是上一个提交的下一步”,作者也常为了一次 review 临时建分支、再合并后删除,最后本地历史和远程记录对不上。该技能面向堆叠提交场景:一次需求由多个互相依赖的提交组成,理想状态是每层只暴露给对应评审者,但底层工具要能表达并维护这种依赖。
技能如何工作
它把 git-branchless 的工作流固化为一组可重复操作。核心是保持提交图可读:smartlog 用来查看堆叠结构和每层待办;restack 调整提交顺序与父依赖,把某个提交移动到正确层上;undo 回退最近一次操作,降低试错成本;sync 把本地记录同步到远端,而不必为每个评审创建一次性分支。使用时先在功能仓库里形成清晰提交链,再按评审粒度逐层共享,避免提交图被无关分支或合并噪声污染。
适用边界与注意点
这套流程依赖 Git 与 git-branchless 二进制,且上游仍处于 alpha 阶段,后续可能出现 breaking change。配套的 gitjk 需要 shell alias,只能回退最近一次命令,对 rebase 等部分 Git 操作支持有限。它更适合愿意承担无分支工作区迁移成本的团队;如果仓库历史已经高度依赖分支保护、PR 审批和发布回滚,迁移前需要先验证工具边界。
使用场景
- 把一个功能拆成多个相互依赖的小提交,要在不创建多个分支的情况下逐层分享给评审者
- rebase 之后提交顺序被打乱,需要用 restack 把每个提交调整回正确的父提交层级
- 评审反馈要求修改中间某个提交,希望只回退最近一次操作而不破坏整条提交链
- 要把本地提交同步给同事评审,但不想为每次评审创建临时分支之后再手动删除
适合人员
- 后端工程师,经常把复杂需求拆成多个小提交并组织逐层评审,希望提交依赖关系一目了然
- 开源项目维护者,需要处理外部贡献者发来的堆叠提交,想用无分支方式完成评审同步
- 全栈开发者,在同一功能上反复迭代,频繁调整提交顺序和父依赖关系并需要随时回退试错