如何使用git rebase合并提交。

3
我该如何使用“git rebase”将第一个提交和第四个提交合并?根据我在这里阅读的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个回答

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 提交输入一个新的提交消息。


@0x90,那是什么意思? - Carl Norum
我的意思是你能否发布来自shell的所有命令和输出,但看起来你已经这样做了。你是不是想在每行之前使用git? - 0x90
不,你看到的那个是当你运行 git rebase --interactive **somesha** 命令时得到的编辑器。 - Chronial

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接