如何将两个旧提交合并为一个?

时间:2018-05-19 04:30:01

标签: git

想象一下,我有最后三次提交:

fwr5678 most recent commit
46545ac fix for old commit
3c337c1 old commit message

我想重写我的历史记录,以便将最旧的两个(46545ac3c337c1)合并到同一个提交中。我希望我的历史看起来像

fwr5678 most recent commit
3c337c1 fix for old commit + old commit message

我该怎么做?

2 个答案:

答案 0 :(得分:1)

最简单的方法是:

git rebase --interactive HEAD~3

然后填写:

pick   3c337c1 old commit message
squash 46545ac fix for old commit
pick   fwr5678 most recent commit

最后,会出现另一个提示,询问如何合并提交消息。只需写下:

fix for old commit + old commit message

显然,所有标准的git adages都适用。 (例如"不要重写公共历史。")

答案 1 :(得分:0)

我不认为这可以通过设计在Git中完成。

提交ID基于较旧的提交,因此如果您的旧提交发生更改,那么您的新提交也应该更改。

在任何情况下,我都假设您已将此历史记录推送到远程,因为您希望保持最高提交ID不变,并且您不应该这样做;它会搞砸其他人的回购。

另一方面,如果你没有推动,那么只需做一个squash

  

...最广泛使用的一种是压缩提交的能力。什么   这样做需要较小的提交并将它们组合成较大的提交,   如果你结束当天的工作或者如果你这样做,这可能是有用的   只想以不同方式打包您的更改。

     

提醒一句:只对尚未推送的提交执行此操作   外部存储库。如果其他人的工作基于提交的工作   你要删除,可能会发生很多冲突。只是不要   如果已与他人共享,请重写您的历史记录。