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

git: squash three last commits together

我想将我的最后 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 -m "some blahblah"

看起来您在交互式变基期间 squash 编辑了所有提交,使您处于 rebasing 状态。这意味着您当前正在进行变基,但尚未完成,只能看到最旧的两个提交 ax48aaax58aa。摆脱这种情况的最简单方法是:

git rebase --abort

这将放弃您可能所做的任何更改,并将您置于变基之前的状态。如果有任何机会你仍然没有看到你所有的5次提交,然后用git reflog查看reflog,找到第一个提交并做git reset --hard ax18aa.

现在再次做一个新的变基,但是这次,pick oldest/top 你的交互式变基的最多提交。

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

这会如你所愿。

另外请记住,在你变基之后,你将有一个新的提交,你将需要强制推送到你的远程仓库,以便上传你的更改!