2012-11-07 10 views
19

für das Zusammenführen ich diese verwenden, um „halten mine“git merge, beide halten

git merge -X ours foo 

und diese für „halten ihre“

git merge -X theirs foo 

aber auf meiner letzten merge sieht es am besten, beide zu halten Seiten. Hat Git eine "Strategie" dafür, die Datei nicht manuell zu bearbeiten?

+0

die Antwort akzeptieren, wenn es sinnvoll ist, um Sie – tinybyte

Antwort

12

Es gibt keine "Zusammenführungsstrategie" zum Lösen dieser Konflikte.

Wenn Sie jedoch wirklich ein Konflikt wie wollen:

<<<< ours 
Foo 
========= 
Bar 
>>>> theirs 

zu

Foo 
Bar 

lösen, dann können Sie die "fusionieren Fahrer konfigurieren. Von der gitattributes Manpage:

Vereinigung

Run 3-Wege-Merge Dateiebene für Textdateien, sondern Linien von beiden Versionen nehmen, statt Konfliktmarken zu verlassen. Dies neigt dazu, die hinzugefügten Zeilen in der resultierenden Datei in zufälliger Reihenfolge zu belassen, und der Benutzer sollte das Ergebnis überprüfen. Verwenden Sie das nicht, wenn Sie die Implikationen nicht verstehen.

eine Linie zu .gitattributes Fügen Sie diese verwenden:

*.whatever merge=union 
+6

Union nicht auf „beide halten“ abbildet. Union ist "halte beide" minus Schnittpunkt. Dies wird schrecklich scheitern, wenn Sie versuchen, beide XML-ähnliche Ressourcendateien "zu behalten". –

+0

Wenn 2 diff-hunks kollidieren, scheinen sie beide vollständig zu behalten. – max630

+0

[Hier] (http://pastebin.com/LrnAEMLs) ist eine kurze Demo – max630