2011-09-29 137 views
10

我有三個分支A,B和C B被定期合併到C的差別混帳 - 合併分支

  o---o---o A 
     /
--------o---o---o---o---o---o B 
     \  \  \ \ 
      o---o---o---o---o---o C 

現在我要合併我用C做了改變,但沒有合併從B的頂部A. 在git中做這件事最簡單的方法是什麼?

+1

要你想哪個分支合併呢? –

+1

他希望它在A – CharlesB

+1

之上這不會導致你提交了Q,W(分支C),E,R(分支B) - 合併 - T,Y(分支C)並且只是提交從分支C中選擇Q,W,T,Y將會由於E,R(可能是T,Y基於)中的缺失代碼而破壞事物? –

回答

8

使用git rebase。

首先,衍合C對B的頂部:

git checkout C 
git checkout -b rebasedC#Let's do a new branch for it also, just in case 
git rebase B 

它將把所有的C從B提交給B, 的現在,我們要移植分支rebasedC至A:

git rebase --onto A B rebasedC 

所以,現在你的C-commits在rebasedC分支的A之上。現在你可以快速轉發你的A:

git checkout A 
git merge rebasedC 
git branch -d rebasedC# I don't think you would need it. 

就是這樣,我希望。

+1

這是如何擺脫B在C中合併? – CharlesB

+3

Rebase做到了。然後你在B之上移動提交,顯然C不再需要合併,所以它們被丟棄。 – kan

+2

我試過用我的git,現在我有樹形結構:http://files.rsdn.ru/20380/git.png(這裏的A分支被命名爲'master')。 – kan

1

您可以試試cherry-picking C的非合併補丁。準備好處理合並衝突。 :)