Git squash使用交互式rebase进行提交,并在其间进行合并提交

时间:2014-01-27 00:05:33

标签: git git-merge git-rebase squash

我有一个包含以下历史记录的测试存储库:

  

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 28d4a62d4d21c3e​​8155553e1216bfa981afe7212作者:你的名字    日期:太阳1月26日22:15:42 2014 +0100

7

是否可以将一些首次提交压缩为一个,以及合并提交?不可能简单地将 HEAD~4 传递给 git rebase -i ,因为它将从合并提交的第一个父级返回4次提交。

2 个答案:

答案 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提交')