2010-03-23 2 views
12

Sagen wir, ich mache eine Rebase B eines Zweiges auf Master und es gibt einen Konflikt. Git öffnet das Standard-Merge-Tool mit 3 Dateien als Eingabe: file.LOCAL, file.BASE, file.REMOTE (sie sind ein wenig anders benannt, aber LOCAL, BASE und REMOTE sind in den Dateinamen und sind wie sie unterschieden werden).Kann ich LOCAL, REMOTE und BASE wie in git mergetool umbenennen?

Jetzt, nach der Mangettool-Manpage: $ LOCAL wird auf den Namen einer temporären Datei gesetzt, die den Inhalt der Datei auf dem aktuellen Zweig enthält; $ REMOTE wird auf den Namen einer temporären Datei gesetzt, die den Inhalt der Datei enthält, die zusammengeführt werden soll, und $ BASE wird auf den Namen einer temporären Datei gesetzt, die die gemeinsame Basis für die Zusammenführung enthält.

Das ergibt wirklich keinen Sinn für mich. LOCAL ist der aktuelle Stand der Branche. Wo ich verloren bin, ist BASE und REMOTE. Also meine Frage ist:

Ist es möglich, git verwenden den Zweig Namen anstelle von LOCAL und ähnlich aussagekräftigere Namen als BASE und REMOTE? Wenn beispielsweise der Verzweigungsname FeatureX und BASE = die Datei im Master ist, gibt es eine Möglichkeit, git dazu zu bringen, FeatureX für LOCAL und Master für BASE zu ersetzen, damit deutlicher wird, woher die Quelle kommt ? Dies ist insbesondere ein Problem bei einer Rebase.

Antwort

8

Ist es möglich, git statt LOCAL

den Zweig Namen zu machen verwende ich glaube nicht, aber wenn Sie in Ihrem mergetool erklären a graphical merge tool, können Sie das externe Tool mit Titel nennen Ihre Wahl:

(Auszug eines Calll Skript Merge-Tool)

t1="'$4 (current branch)'" 
t2="'(common ancestor)'" 
t3="'(to be merged)'" 

    "C:/Program Files/Araxis/Araxis Merge/Compare.exe" -max -wait -merge -3 -a2 -title1:${t1} -title2:${t2} -title3:${t3} "$alocal" "$base" "$remote" "$result" 

Auf diese Weise können Sie leichter sehen, was was ist.

3

Ich bin mir nicht ganz sicher, ob diese Erklärung richtig ist, aber BASE wird der Punkt sein, an dem beide Versionen der Datei identisch waren. Es könnte sein, was du in einem Git Tree als "Eltern" nennst.

Wenn sie auseinander gingen, endete mit LOCAL und REMOTE, die miteinander in Konflikt stehen.