2014-02-12 56 views
1

我有一个简单的场景:“合并” 2个的Git分支,而忽略原有承诺

2个分支:myownb

myownb领先于分公司与3提交:

我需要的是“合并”这两个分支,但不是在经典模式。

我想所有这些3个提交从myownb被推因为只有一个提交到分支(和优选地与不同的提交消息)。

或者创建这两个分支之间所有差异的补丁,稍后应用到我的主分支,并按我的意愿提交。

+2

这是什么混帐所谓的“南瓜合并”(这实际上不是一个合并的话)直例如:http://stackoverflow.com/q/2427238/ 1256452和http://stackoverflow.com/q/19308790/1256452 – torek

回答

3

在这种情况下,我会做的是执行交互式底座。这将允许你做你提到的所有事情(挤压到一个提交,并提供一个不同的提交信息)。

myownb你会写git rebase -i HEAD~3,因为当你从master分支出来时,你提前3次提交。在出现,你应该看到您3个提交为了对话框,像:

interactive rebase screen

你必须pick一个让其他人都与一个基础被压扁,第二和第三提交更改pickssquash。一旦你完成了保存并退出文件。一旦你完成了这个提交消息窗口就会弹出。

enter image description here

在这个窗口中,你就可以写你的单提交信息。删除它提供的所有通用消息并编写单个提交消息。完成之后,保存并退出文件。

回到你的终端,你应该全部设置。运行一个git log,你会看到你现在拥有的所有提交都是通向主控的提交,然后是一次提交你之前提交的那三个提交。

要完成,git checkout master然后git merge myownb