2016-06-07 76 views
1

我正在測試GIT分支合併和衝突解決方案,並更改爲簡單的文本文件。Git合併不標記衝突文本文件中的所有差異

我已經簽出了一個名爲issue1的分支,對File_A進行了更新並提交了更改。

我然後簽出master,由多個更新FILE_A,並承諾改變

當我再嘗試git merge issue1我得到預期的

Auto-merging /File_A 
CONFLICT (content): Merge conflict in /File_A 
Automatic merge failed; fix conflicts and then commit the result. 

但是當我打開文件中的衝突標記只突出顯示了它找不到的第一個區別。

<<<<<<< HEAD 
<?xml version="1.0" encoding="utf-7" ?> 
======= 
<?xml version="1.0" encoding="utf-8"?> 
>>>>>>> issue1 

是否可以很容易地突出了這種方式,所有的分歧還是我將不得不使用衝突解決不同的方法?

+0

您確定您所做的更改實際上有衝突嗎?如果沒有,git會自動合併它們。如果您想查看所有差異的列表,請嘗試使用'git diff'。 –

+0

我剛剛測試了一些,我沒有意識到git實際上會更新文件內容作爲合併的一部分,如果它能識別更改,不作任何提示。有什麼辦法在你嘗試一個git合併時突出顯示所有文件的變化? –

回答

1

以下是我使用的一些常用命令。

得到快速瀏覽

git diff -- shortstat master issue1 

到的差異概述每個文件

git diff --stat master issue1 

要突出一個文件兩次提交之間的差異(不衝突)。這將迫使輸出到終端。請參閱'git help config'diff.external部分以使用外部差異編輯器。

git diff --no-ext-diff master issue1 -- File_A 

如果要合併的文件包含更改但文件的不同部分中,它們不會顯示爲衝突。合併(結果)文件將帶來兩個更改。它只會在兩個文件想要更改相同的行時發生衝突。

+0

這是我沒有意識到的最後一句話,讓我頭痛。謝謝 –

0

我應該張貼在提問前閱讀,這是直接從混帳合併的幫助文件,它說明了爲什麼不是所有的文件領域產生了分歧凸顯

如何衝突都 在合併服用,工作樹文件被更新以反映合併的結果。 在對共同祖先版本進行的更改中,不重疊的版本(即,您更改了文件的某個區域,而另一側完全保留了該區域,或反之亦然)包含在最終結果中,逐字爲。但是,當雙方都對同一地區進行更改時,Git不能隨意選擇一邊而不是另一邊,並要求您通過將雙方都對該區域做的事情解決。

相關問題