2012-03-27 5 views
0

Ich versuche herauszufinden, was passiert, wenn ich git Zweige zusammenführen. Ich habe eine Verzweigung, die sich von der Hauptverzweigung (Entwicklung) entfernt hat (Merkmal_1). Ich mache einen MergeGit merge Ergebnis kann nicht gelesen werden durch Diff-Tool

git merge develop 

und ich bekomme einige erwartete Konflikte

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

der Status der dieser Datei ist dies:

$ 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> 

es scheint, gibt es zwei Arten von "diffs" sind in dieser Datei die mit den Plus-/Minuszeichen und die mit den Pfeilen mit "HEAD". Als ich es öffne in einem Merge-Tool wie meld bekomme ich etwas, das ich nicht glaube, richtig ist: meld screenshot

Wie Sie die Arbeits Baum Änderungen als diff auftauchen sehen und den Markers als Teil der Show Datei, die ich nicht denke, dass sie sollten. Ich bekomme etwas Ähnliches mit dem IntelliJ-Werkzeug "Konflikte lösen". Kann mir jemand sagen, was ich falsch gemacht habe oder was mir fehlt? Oder kannst du mir einfach sagen, was in der Datei passiert?

Antwort

0

Die Datei selbst enthält die Konfliktmarker; es sieht wie folgt aus:

<<<<<<< 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> 

Die Zusammenführung hat in gestoppt zwischen verpflichtet, Ihnen eine Chance, das Problem zu beheben, wenn Sie also diff die Datei, es wird die Änderungen zwischen der Datei zeigen, und dem letzten begehen, die zeigt alle neuen Sachen in diesem Commit, plus die Konfliktmarker, die Git hinzugefügt, um die Datei

Was Sie eigentlich tun möchten, ist die Datei bearbeiten, lösen Sie die Konflikte, entfernen Sie die Markierungen und dann git add res/values/dimens.xml; git commit, um das Konflikt Commit zu beheben

+0

ich verstehe diesen Teil. Ich denke, was ich verwirrt bin, ist warum meld würde die Konfliktmarker als Teil der Datei zeigen, sollte es mir nicht die Konfliktoptionen zeigen und welche ich wählen möchte? – browep

0

Die Konfliktmarker sind immer ein Teil der Datei, so wie sie ist . Die Marker werden nicht nur von git benutzt, auch Netbeans benutzt die Marker. Mit den Markern weiß ein externes Programm, dass es ein Merge-Problem gibt und wie es zu lösen ist.

+0

ein Mergetool wie Meld? Das ist ein SS von oben, der die tatsächlichen Diff-Marker anzeigt, anstatt dessen, was die Diff-Marker darstellen. – browep

Verwandte Themen