git:将最后三个提交一起压缩

问题描述

我想将我的最后3个提交一起压缩(从ax38aa到ax18aa)。

我有

commit ax18aa
commit ax28aa
commit ax38aa
commit ax48aa
commit ax58aa

代码

git rebase -i ax48aa

但感到惊讶的是,当我做了 git log 时,我只有

commit ax48aa
commit ax58aa

,也没有向mi询问新的提交消息。我能怎么做?请? 谁能帮忙 谢谢你,

解决方法

可以这样做:

git reset --soft ax38aa
git commit --amend "some blahblah"
,

您似乎在交互式基础上squash完成了所有提交,而您处于rebasing状态。这意味着您当前正在进行重新设置,但尚未完成它,只能看到最早的两次提交ax48aaax58aa。摆脱这种情况的最简单方法是:

git rebase --abort

这将放弃您可能已进行的所有更改,并使您进入重新设置基准之前的状态。如果仍然有机会看到所有5个提交,则将refloggit reflog一起查看,找到第一个提交并执行git reset --hard ax18aa

现在再次进行新的变基,但是这次pick是您的交互式变基中最早/最高的提交。

git rebase -i HEAD~3
# or
git rebase -i ax48aa

,然后执行以下操作:

pick ax38aa commit message 3
squash ax28aa commit message 2
squash ax18aa commit message 1

这会做您想要的。

还请记住,在重新设置基准之后,您将进行一次新的提交,并且需要强制推送到远程存储库,才能上传更改!