2014-02-12 83 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