Welche BACKUP-, BASE-, LOCAL- und REMOTE-Dateien werden in einem Git-Merge-Konflikt generiert?

122

Ich gehe davon aus, dass die Dateien LOCAL und REMOTE genau das sind, was ihr Name andeutet, aber wofür sind BASE und BACKUP gedacht?

filler003
quelle

Antworten:

166

Git führt eine Drei-Wege-Zusammenführung durch und findet den gemeinsamen Vorfahren (auch "Zusammenführungsbasis" genannt) der beiden Zweige, die Sie zusammenführen. Wenn Sie git mergetooleinen Konflikt aufrufen , werden diese Dateien erstellt, die für die Einspeisung in ein typisches 3-Wege-Zusammenführungswerkzeug geeignet sind. So:

  • foo.LOCAL: die "unsere" Seite des Konflikts - dh Ihr Zweig ( HEAD), der die Ergebnisse der Zusammenführung enthält
  • foo.REMOTE: die "ihre" Seite des Konflikts - der Zweig, in den Sie verschmelzen HEAD
  • foo.BASE: der gemeinsame Vorfahr. nützlich für die Einspeisung in ein Drei-Wege-Zusammenführungswerkzeug
  • foo.BACKUP: Der Inhalt der Datei vor dem Aufrufen des Zusammenführungstools wird im Dateisystem gespeichert, wenn mergetool.keepBackup = true.
Edward Thomson
quelle
9
Nr. LOCALIst die Version in HEAD. BACKUPwar die Version, die sich vor dem Aufruf auf der Festplatte befand mergetool. Es enthält wahrscheinlich die diff3-Konfliktmarkierungen, die Sie möglicherweise vor dem Aufrufen bearbeitet haben mergetool.
Edward Thomson
Hier ist ein guter Artikel, der Zusammenführungsfälle einschließlich der Drei-Wege-Zusammenführung erklärt: git-scm.com/book/en/v2/…
qatz
16
Die Wörter LOCAL / REMOTE sind irgendwie irreführend und lassen mich denken, dass sie sich auf "meine Änderungen" / "Remote-Änderungen" beziehen, aber normalerweise ist LOCAL im Kontext von "Merge in Master" der Zielzweig, der die Modifikation anderer ist, und REMOTE ist der Quellzweig, der meine Modifikationen ist. :)
TingQian LI
8
Sie sind ... Machst du eine Rebase? Weil die Seiten in einer Rebase vertauscht sind.
Edward Thomson