2013-06-04 83 views
0

當前我在分支foo,我想合併來自分支bar的更改,git顯然認爲是foo的歷史的一部分,由於複雜的原因解釋。強制合併在git分支

不幸的是,其後果是,如果我跑

git checkout foo 
git merge bar 

我會得到消息Already up-to-date雖然有變化分支bar,我想進入分支foo

我已經考慮了兩種可能的解決方案。

一種可能性是簡單地結帳bar,將它複製到其他地方,結賬foo,然後手動執行合併。這將起作用,但如果存在這種情況,我寧願使用較少的手動解決方案

另一種可能性是做反向合併,也就是將foo合併爲bar。 不幸的是,當我嘗試這樣做時,git的automerge會完全刪除bar中我想保留的那些更改,並將其替換爲foo的更改,這是不可取的。

我怎麼能強迫混帳假裝bar是在未來foo是在過去,允許bar合併成foo

+0

既是富和酒吧遠程分支機構或本地? –

+0

@AzizShaikh,都是當地的。 – merlin2011

+0

你可以畫一些分支的ASCII藝術來解釋爲什麼Git的聲明('已經是最新的')是錯誤的? –

回答

0

不是一個聰明的分辨率,但應該工作:

首先,運行

git diff -p foo bar <files_you_want_to_merge> > patch 

生成的路徑文件,並根據需要進行編輯(如刪除foo那些較新的比bar)。

然後運行

git checkout foo 
git apply patch 

將 '僞合併' barfoo