2015-10-16 64 views

回答

0

你可以這樣做:

$ git checkout branchA 
$ git merge -s ours branchB 

這一合併被稱爲 「我們的」 合併策略。

查看更多關於合併文檔here

1

您可以使用-X標誌來指定更喜歡哪個,ourstheirs

git merge <branch> -X ours將始終偏好您當前所在分支的版本,而git merge <branch> -X theirs會偏好被合併分支的版本。

結帳從man git-merge下面瞭解更多詳情:

我們

此選項強制衝突的帥哥是自動解決通過支持我們的版本乾淨。來自另一棵與我們不衝突的樹的變化反映到合併結果。對於二進制文件,整個內容都是從我們這邊拿來的。

他們

這是 「我們的」 相反。

所以在你的情況下,運行git merge B -X ours當分支A應該做的伎倆!

1

已發佈的兩個答案(-X ours-s ours)都是正確的,或者等價地,都是錯誤的。這取決於你想要的結果。

下面是一個簡單而具體的例子。假設我們有以下幾點:

  O 
     / \ 
... - B  M 
     \ /
      T 

其中B是公共基礎犯,O是「我們」的承諾,T是「他們的」承諾,並M是合併後的結果(即我們想要生成)。

進一步假設在提交B,文件conflict.txt說:

I am a file 
that contains 
some text. 

另一個文件,README,完全是空的。

在提交O時,我們將第二行更改爲that has而不是that contains。 (也就是說,我們改變了第二行。)我們根本沒有碰到README

在承諾T,他們改變了第二行閱讀that used to have(That is, they changed the word "contains" to "still contains".) They also added some text to自述文件`。

現在,如果您要求git將其分支合併到我們的分支中,文件conflict.txt中將存在衝突,因爲git不知道如何處理衝突的更改。使用-X ours告訴git:如果發生衝突,請使用我們的版本,所以提交M將保留我們的更改並放棄其更改。

另一方面,有沒有README衝突,因爲我們沒有改變它。他們只有變更了README。與-X ours,提交M將保持其變化。

然而,使用-s ours,git也會保留我們的版本README

根據你的問題,我不清楚這些,或者你想要的第三種非內置替代選項。