git 未压缩修复提交

5us2dqdw  于 2022-11-20  发布在  Git
关注(0)|答案(1)|浏览(174)

我发现了Git的fixup/autosquash特性,想给予一下。不幸的是,我在压缩一些fixup提交时遇到了问题。
这是我当前运行git log --oneline -n 4时的Git历史记录:

95686a33 (HEAD -> feature/ABC-1234-My-Feature, origin/feature/ABC-1234-My-Feature) fixup! feat: implement my feature
ac56a2ee fixup! feat: implement my feature
de904aa3 fixup! feat: implement my feature
cc3a205b feat: implement my feature

现在我运行git rebase -i --autosquash cc3a205b,编辑器打开,显示以下内容:

pick de904aa3 fixup! feat: implement my feature
pick ac56a2ee fixup! feat: implement my feature
pick 95686a33 fixup! feat: implement my feature

# Rebase cc3a205b..95686a33 onto cc3a205b (3 commands)

我将关闭编辑器,而不进行任何更改,从而得到以下输出:

Successfully rebased and updated refs/heads/feature/ABC-1234-My-Feature.

再次执行git log --oneline -n 4时,3个fixup提交仍然存在。
我希望历史记录只包含一个带有新Git提交ID的feat: implement my feature提交,但不包含fixup提交。
我是做错了什么还是我有错误的期望?
运行git --version返回git version 2.38.1.windows.1,所以我使用的是最新版本。

nzk0hqpo

nzk0hqpo1#

问题是您的选择列表不包含要将修正合并到其中的提交:

pick de904aa3 fixup! feat: implement my feature
pick ac56a2ee fixup! feat: implement my feature
pick 95686a33 fixup! feat: implement my feature

请注意,您的feat: implment my feature提交不会出现在那里,否则Git无法将其识别为修复提交,也没有任何内容可供合并。
您需要根据cc3a205b^cc3a205b的父代)重定基址:

git rebase -i --autosquash cc3a205b^

相关问题