如何使用git rebase组合提交

时间:2013-05-21 17:59:37

标签: git

如何使用'git rebase'将第一次提交与git中的第四次提交相结合。 根据我在这里阅读的http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html,'git rebase'中的'squash'命令仅与之前的提交融合。

在git中,我有

$ git log
commit 9a30d13
commit 4a6729e
commit 4a6729e
commit 4a6729e
commit a610898

基本上,我希望9a30d13的更改与a610898中的更改相结合,以便新历史记录

$ git log
commit 4a6729e
commit 4a6729e
commit 4a6729e
commit a610898 + 9a30d13

我没有推过任何东西。

谢谢。

1 个答案:

答案 0 :(得分:4)

当您按照链接中所述进行交互式rebase时,您也可以重新排序提交。更改订单后,您可以将9a30d13压缩到a610898

当交互式rebase出现时,它看起来像这样(最旧的提交在上面):

pick a610898 Message A
pick 4a6729e Message B
pick 4a6729e Message C
pick 4a6729e Message D
pick 9a30d13 Message E

然后重新排序:

pick a610898 Message A
pick 9a30d13 Message E
pick 4a6729e Message B
pick 4a6729e Message C
pick 4a6729e Message D

并将9a30d13更改为squash而不是pick

pick a610898 Message A
squash 9a30d13 Message E
pick 4a6729e Message B
pick 4a6729e Message C
pick 4a6729e Message D

保存&退出,你就完成了。您将有机会为新的a610898 + 9a30d13提交输入新的提交消息。