2012-03-27 67 views
0

我想弄清楚當我合併git分支時發生了什麼。我有一個從主分支(開發)分支出來的分支(feature_1)。我做了合併git合併結果不能通過比較工具讀取

git merge develop 

,我也得到了一些預期的衝突

CONFLICT (add/add): Merge conflict in res/values/dimens.xml 
Automatic merge failed; fix conflicts and then commit the result. 

了該文件的狀態是這樣的:

$ git diff res/values/dimens.xml 
diff --cc res/values/dimens.xml 
index ec31f04,554d1e7..0000000 
--- a/res/values/dimens.xml 
+++ b/res/values/dimens.xml 
@@@ -1,5 -1,4 +1,11 @@@ 
++<<<<<<< HEAD 
+<resources> 
+ <dimen name="left_nav_side">120dip</dimen> 
+ <dimen name="left_nav_vertical_margin">30dip</dimen> 
+ <dimen name="third_left_nav_vertical_margin">10dip</dimen> 
++======= 
+ <?xml version="1.0" encoding="utf-8"?> 
+ <resources> 
+  <dimen name="round_corner">4dp</dimen> 
++>>>>>>> develop 
    </resources> 

似乎有兩種類型的「diff文件」的在這個文件中,加/減號和帶有「HEAD」的箭頭。當我在合併工具中打開它時,我會得到一些我認爲不正確的東西: meld screenshot

正如您所看到的,工作樹更改顯示爲diff,並將標記顯示爲文件,我認爲他們不應該。我得到了與IntelliJ「解決衝突」工具類似的東西。 有人可以告訴我我做錯了什麼或我失蹤了嗎?或者,也許你能告訴我文件中發生了什麼?

回答

0

文件本身包含衝突標記;它看起來像這樣:

<<<<<<< HEAD 
<resources> 
    <dimen name="left_nav_side">120dip</dimen> 
    <dimen name="left_nav_vertical_margin">30dip</dimen> 
    <dimen name="third_left_nav_vertical_margin">10dip</dimen> 
======= 
<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <dimen name="round_corner">4dp</dimen> 
>>>>>>> develop 
</resources> 

合併已經停止間承諾給你一個機會來解決這個問題,所以如果你diff文件它會顯示文件和上次提交之間的變化,這顯示該提交中的所有新東西以及git添加到文件中的衝突標記

實際上您想要執行的是編輯文件,解決衝突,刪除標記,然後使用git add res/values/dimens.xml; git commit來修復衝突的提交

+0

我明白那一部分。我想我感到困惑的是爲什麼融合會將衝突標記顯示爲文件的一部分,它是否應該顯示衝突選項以及我想選擇哪些選項? – browep 2012-03-27 01:23:54

0

衝突標記始終是它正確的文件的一部分,因爲它是。標記不僅被git使用,例如netbeans也使用標記。通過標記,外部程序知道存在合併問題以及如何解決它。

+0

一個mergetool像meld?這是一個來自上面的SS,它顯示了實際的差異標記,而不是diff標記表示的內容。 – browep 2012-03-27 15:32:25