想象一下,我有最后三次提交:
fwr5678 most recent commit
46545ac fix for old commit
3c337c1 old commit message
我想重写我的历史记录,以便将最旧的两个(46545ac
和3c337c1
)合并到同一个提交中。我希望我的历史看起来像
fwr5678 most recent commit
3c337c1 fix for old commit + old commit message
我该怎么做?
答案 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。
...最广泛使用的一种是压缩提交的能力。什么 这样做需要较小的提交并将它们组合成较大的提交, 如果你结束当天的工作或者如果你这样做,这可能是有用的 只想以不同方式打包您的更改。
提醒一句:只对尚未推送的提交执行此操作 外部存储库。如果其他人的工作基于提交的工作 你要删除,可能会发生很多冲突。只是不要 如果已与他人共享,请重写您的历史记录。