我做了一系列提交,现在我看到我希望合并2次提交。不是最后两个,而是稍远一点
我的日志:
commit 326f35d83963660893d065e480f231b76f052dd2
Author: Peter Smit <peter@something.eu>
Date: Thu Dec 16 11:13:47 2010 +0200
Small editing in ASR chapter
commit 652b4c27a5fcb2125ed82aea31421fca4e8eee47
Author: Peter Smit <peter@something.eu>
Date: Thu Dec 16 11:12:55 2010 +0200
Added longtable package for abbreviations
commit 74069a151cce9c47484403c1db76e68e1360d8ee
Author: Peter Smit <peter@something.eu>
Date: Thu Dec 16 11:12:23 2010 +0200
Changed some headings in the introduction
commit 94126f79fdc6f4927a3f270c152393377e9ef5a5
Author: Peter Smit <peter@something.eu>
Date: Thu Dec 16 11:11:57 2010 +0200
Added abbreviations chapter
所有四个提交都在更改单独的文件,因此不会出现任何合并冲突。
我想将652b4(添加的longtable)添加到94126(添加缩写)提交。我怎么能这样做?
答案 0 :(得分:10)
这种情况由interactive rebase处理。关于不重写已推送历史的标准警告适用。有一个不错的解释in the Git Book,但我个人认为rebase -i
的界面完全是颠倒的。
通过命名您需要修改的最早提交的父来开始rebase:
$ git rebase -i 94126f7^
弹出一个编辑器,列出前进时间顺序中的提交(因此你必须颠倒头脑)。将列出从HEAD到命名提交的子的每次提交,这就是您为其父命名的原因:
pick 94126f7 Added abbreviations chapter
pick 74069a1 Changed some headings in the introduction
pick 652b4c2 Added longtable package for abbreviations
pick 326f35d Small editing in ASR chapter
你要做的是压缩提交652b4c2到94126f7,所以你将它的命令改为“压缩”并在后者之后直接移动它:
pick 94126f7 Added abbreviations chapter
squash 652b4c2 Added longtable package for abbreviations
pick 74069a1 Changed some headings in the introduction
pick 326f35d Small editing in ASR chapter
保存并退出;弹出的下一个编辑器将用于组合提交消息。您可以根据需要更改此项,然后退出时将完成变基。
重新定位时的冲突可能很烦人(某些补丁根本不会通勤),合并可能特别难看,但重新排序文件添加不会有任何问题。
答案 1 :(得分:3)
如果您尚未推送这些提交,请执行git rebase --interactive
(请参阅Interactive Rebasing)
您将能够将这两个提交合并为一个。