2010-02-15 42 views
23

我遇到了一些問題。我們有我們自己的CMS,它使用git進行協作和版本控制。git合併遞歸他們的,它是如何工作的?

現在我有兩個git倉庫A和B,A是一個項目,B是CMS本身。現在,我想B插入A,但是當我這樣做,我得到了很多的合併,衝突和衝突的解決總是要用的東東從B.

現在我覺得我需要的是

git merge <branch> -s recursive theirs <commit> 

因爲我想合併,當發生合併衝突時,它應該被迫使用B的解決方案。但我無法讓它工作。它總是告訴我fatal: 'theirs' does not point to a commit

The recursive theirs我找到了here

有誰知道我做錯了什麼?

+0

的可能的複製[我該如何選擇(?)合併策略爲git rebase?](http://stackoverflow.com/questions/2945344/how-do-i-select-a-merge-strategy-for-a-git-rebase) – Louis

回答

48

您必須使用這種形式來傳遞合併策略選擇:

git merge -s recursive -Xtheirs 

另外,還要確保您的版本suppors -Xtheirs,這是一個相當最新功能

+0

這確實是錯誤的git版本,現在與新的它的工作..只有它不像我想的那樣好,我得到所有的合併衝突,但沒有一個包含任何衝突:s –

+0

這個答案似乎錯過了合併中的分支機構? 'git merge -s遞歸-Xtheirs ' – robstarbuck

2

我認爲它失敗的原因是你指定「遞歸他們」作爲策略。 「遞歸」是一種策略,當你在它之後放置一個空格時,「他們」被解釋爲git需要合併你的工作副本(例如另一個分支或refspec)。

我想你不能指定一個完全像你想要的策略。有一種叫做「我們的」的策略,與你想要的相反。

在這種情況下使用的通常模式是合併或重新綁定到「B」存儲庫。從「A」倉庫的工作副本中,如果可能的話,您可以進行重定位(如果您已經與其他開發人員共享git倉庫,這可能是不可能的)。一個rebase本質上會將A存儲庫放回到兩個存儲庫中的常見提交中,應用「B」提交,然後提交「A」提交。您將一路解決任何合併衝突。

一旦通過合併或重新綁定到「B」存儲庫的痛苦,未來的合併將不那麼痛苦。

相關問題