我有一个包含以下历史记录的测试存储库:
commit eb4a4d52a8fe6abdebb93c7747beac2d511003af(HEAD,master)合并: 22f849c 94e27d1作者:您的姓名日期:1月27日星期一 00:51:42 2014 +0100
Merge branch 'cheryr' Conflicts: FILE
commit 22f849c403b6cdf43280e66e937931bf9d0ab25a作者:你的名字 日期:2014年1月26日21:01:35 +0100
4 toto
commit 94e27d1c78833784619e25eeb8e0186f154f2282(cheryr)作者:您的 姓名日期:2014年1月27日星期一00:48:12 +0100
toto
commit 2368d78ba95811e9eb9897487cccb7b7f6927910作者:你的名字 日期:太阳1月26日22:31:51 2014 +0100
10
commit b1f0f8a1a1951e661a7e833314fc483085516b0c(tmp)作者:您的 姓名日期:2014年1月26日22:19:56 +0100
9
commit 3a8f2e17e721821ae8ebd1e272437c8632224b9a作者:你的名字 日期:太阳1月26日22:18:23 2014 +0100
8
commit 28d4a62d4d21c3e8155553e1216bfa981afe7212作者:你的名字 日期:太阳1月26日22:15:42 2014 +0100
7
是否可以将一些首次提交压缩为一个,以及合并提交?不可能简单地将 HEAD~4 传递给 git rebase -i ,因为它将从合并提交的第一个父级返回4次提交。
答案 0 :(得分:1)
git rebase -i HEAD~4
可以正常工作,如果它是一个很远的提交,或者你不知道它有多远,拿你要编辑的第一个提交的父级的哈希,或者对我来说,我采取哈希并附加一个^
来表示父母
git rebase -i hash^
我认为〜也会起作用
git rebase -i hash~
然后,您可以将第一次提交设置为选择p
或重写,如果您要更改其消息r
而将剩余的3设置为修正f
,这样就不会停止询问你有一个新的提交消息,它将在中间停止任何冲突,如果你通过创建一个提交的提交,你也需要重新解决任何冲突。
答案 1 :(得分:0)
尝试: git rebase -i HEAD ^ 2~3
'^'符号用于选择1个父项(在这种情况下,^ 2表示选择第二个父项,然后~3表示'去3提交')