Git Absorb 自动修复提交生成器
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/git-absorb-automatic-fixup-commit-generator
技能介绍
为什么需要自动修复提交
当你基于某个分支继续开发时,常会遇到这样的场景:上游的某个提交在评审后需要修改,而你已经在它之上做了新的提交。传统做法是手动 git rebase -i,逐个找到对应提交,把改动 squash 或 fixup 进去,过程容易出错且耗时。
git-absorb 的核心思路是让变更自动落回正确的祖先提交,无需人工挑选和排序。它会分析你暂存区里的改动,匹配到每个变更最可能归属的原始提交,并自动生成对应的 fixup! 提交,把修改“吸收”进历史,保持线性且干净的分支。
它如何工作
- 分析暂存区变更:读取
git diff --cached,识别出哪些行被修改、新增或删除。 - 匹配祖先提交:根据变更内容,计算每个 hunk 最可能归属的已有提交(通常是离当前 HEAD 最近的、修改了相同文件或相似行的提交)。
- 生成 fixup 提交:为每个被匹配的祖先提交创建一个
fixup!提交,把对应的变更打进去,而不是创建新的顶层提交。 - 应用并整理:最后可以通过
git rebase -i --autosquash快速完成整理,将 fixup 合并到原提交中。
整个过程不需要你打开交互式编辑器,也减少了因手动操作导致的冲突或错位。
适用边界与注意点
- 依赖
a2x工具:构建时需要系统中存在a2x,否则可能无法生成 manpage。 - 需要构建
libgit2:虽然不链接系统的libgit2,但编译和运行需要你能自行构建libgit2(受近期代码变更影响)。 - 适用于线性历史:如果你的分支已经有合并提交或复杂的非 ff 历史,匹配逻辑可能不如预期精准。
- 暂存区驱动:工具主要关注
--cached的改动,未暂存的内容不会被处理,需提前确认变更已加入暂存区。
使用场景
- 在分支开发后期,上游提交需要根据评审意见修改,希望自动把改动并入对应提交而非手动rebase
- 维护多提交的功能分支时,想快速让暂存区的修复对应到正确的祖先提交并生成fixup
- 做代码评审后的返工,希望直接分析暂存改动并匹配原始提交,减少交互式操作
- 基于线性历史的PR需要连续修正多个早期提交,想自动生成fixup提交整理历史
适合人员
- 需要频繁处理多提交分支、希望减少手动rebase错误的后端工程师
- 负责代码评审返工、想把修复自动并入对应提交的团队技术负责人
- 在开源项目贡献PR、希望保持提交历史整洁的开发者
- 管理功能分支合并、需要快速整理fixup提交的研发工程师