English ▾ Themen ▾ Neueste Version ▾ git-merge-file zuletzt aktualisiert in 2.44.0

NAME

git-merge-file - Führt eine Drei-Wege-Datei-Zusammenführung durch

SYNOPSIS

git merge-file [-L <current-name> [-L <base-name> [-L <other-name>]]]
	[--ours|--theirs|--union] [-p|--stdout] [-q|--quiet] [--marker-size=<n>]
	[--[no-]diff3] [--object-id] <current> <base> <other>

BESCHREIBUNG

Gegeben die drei Dateien <current>, <base> und <other>, integriert git merge-file alle Änderungen, die von <base> zu <other> führen, in <current>. Das Ergebnis wird normalerweise in <current> geschrieben. git merge-file ist nützlich, um separate Änderungen an einem Original zu kombinieren. Angenommen, <base> ist das Original und sowohl <current> als auch <other> sind Modifikationen von <base>, dann kombiniert git merge-file beide Änderungen.

Ein Konflikt tritt auf, wenn sowohl <current> als auch <other> Änderungen in einem gemeinsamen Zeilensegment haben. Wenn ein Konflikt gefunden wird, gibt git merge-file normalerweise eine Warnung aus und klammert den Konflikt mit Zeilen ein, die die Marker <<<<<<< und >>>>>>> enthalten. Ein typischer Konflikt sieht so aus

<<<<<<< A
lines in file A
=======
lines in file B
>>>>>>> B

Wenn es Konflikte gibt, sollte der Benutzer das Ergebnis bearbeiten und eine der Alternativen löschen. Wenn jedoch die Option --ours, --theirs oder --union aktiv ist, werden diese Konflikte gelöst, wobei Zeilen aus <current>, Zeilen aus <other> oder Zeilen aus beiden bevorzugt werden. Die Länge der Konfliktmarker kann mit der Option --marker-size angegeben werden.

Wenn --object-id angegeben ist, tritt exakt das gleiche Verhalten auf, außer dass anstatt anzugeben, was als Dateien zusammengeführt werden soll, dies als eine Liste von Objekt-IDs angegeben wird, die auf Blobs verweisen.

Der Exit-Wert dieses Programms ist bei einem Fehler negativ und ansonsten die Anzahl der Konflikte (abgeschnitten auf 127, wenn es mehr als diese Anzahl von Konflikten gibt). Wenn die Zusammenführung erfolgreich war, ist der Exit-Wert 0.

git merge-file ist als minimaler Klon von RCS merge konzipiert; das heißt, es implementiert alle RCS merge-Funktionalitäten, die von git[1] benötigt werden.

OPTIONEN

--object-id

Gibt an, dass die zusammenzuführenden Inhalte als Blobs im aktuellen Repository anstelle von Dateien angegeben werden. In diesem Fall muss die Operation innerhalb eines gültigen Repositorys stattfinden.

Wenn die Option -p angegeben ist, geht die zusammengeführte Datei (einschließlich Konflikten, falls vorhanden) wie gewohnt an die Standardausgabe. Andernfalls wird die zusammengeführte Datei in den Objektspeicher geschrieben und die Objekt-ID ihres Blobs wird an die Standardausgabe geschrieben.

-L <label>

Diese Option kann bis zu dreimal angegeben werden und gibt Labels an, die anstelle der entsprechenden Dateinamen in Konfliktberichten verwendet werden sollen. Das heißt, git merge-file -L x -L y -L z a b c generiert eine Ausgabe, die so aussieht, als käme sie von den Dateien x, y und z anstelle von den Dateien a, b und c.

-p

Sendet Ergebnisse an die Standardausgabe, anstatt <current> zu überschreiben.

-q

Leise; warnt nicht vor Konflikten.

--diff3

Zeigt Konflikte im "diff3"-Stil an.

--zdiff3

Zeigt Konflikte im "zdiff3"-Stil an.

--ours
--theirs
--union

Anstatt Konflikte in der Datei zu belassen, werden Konflikte gelöst, indem die Zeilen von unserer (oder ihrer oder beider) Seite bevorzugt werden.

--diff-algorithm={patience|minimal|histogram|myers}

Verwendet einen anderen Diff-Algorithmus während der Zusammenführung. Der aktuelle Standard ist "myers", aber die Auswahl eines neueren Algorithmus wie "histogram" kann helfen, Fehlzusammenführungen zu vermeiden, die aufgrund von unwichtigen übereinstimmenden Zeilen (wie Klammern aus verschiedenen Funktionen) auftreten. Siehe auch git-diff[1] --diff-algorithm.

BEISPIELE

git merge-file README.my README README.upstream

kombiniert die Änderungen von README.my und README.upstream seit README, versucht sie zusammenzuführen und schreibt das Ergebnis in README.my.

git merge-file -L a -L b -L c tmp/a123 tmp/b234 tmp/c345

führt tmp/a123 und tmp/c345 mit der Basis tmp/b234 zusammen, verwendet aber die Labels a und c anstelle von tmp/a123 und tmp/c345.

git merge-file -p --object-id abc1234 def567 890abcd

kombiniert die Änderungen des Blobs abc1234 und 890abcd seit def567, versucht sie zusammenzuführen und schreibt das Ergebnis an die Standardausgabe

GIT

Teil der git[1] Suite