HOWTO · Git
Einrichten des SourceGear DiffMerge-Tools für Git
In diesem Artikel besprechen wir den Prozess der Konfiguration von Git zur Verwendung von DiffMerge von SourceGear als Standard-Difftool.
Auf dieser Seite
Konfigurieren Sie Git so, dass es SourceGears DiffMerge für grafische Vergleiche mit git difftool und zum Auflösen von Zusammenführungen mit git mergetool öffnet. DiffMerge unterstützt Drei-Wege-Vergleiche. Eine Zusammenführungsansicht kann daher beide Seiten, ihre gemeinsame Basis und die Ergebnisdatei zeigen. Installieren Sie zuerst DiffMerge und konfigurieren Sie anschließend den Pfad zur ausführbaren Datei, die auf Ihrem System vorhanden ist.
Warum DiffMerge mit Git verwenden?
Git kann Revisionen vergleichen und Eingaben für eine Zusammenführung vorbereiten, ohne dass dafür eine grafische Anwendung nötig ist. DiffMerge zeigt diese Dateien gemeinsam an, sodass sich Änderungen und Konflikte leichter prüfen lassen. Vergleichs- und Zusammenführungsbefehle verwenden unterschiedliche Eingaben: Ein Diff vergleicht zwei Versionen, während eine Zusammenführung auch einen gemeinsamen Vorfahren und ein Ziel für die aufgelöste Datei einbeziehen kann.
DiffMerge unter Windows einrichten
Konfigurieren Sie in der Bash von Git die Toolnamen und Befehle mit den folgenden Einstellungen, die Sie direkt übernehmen können. Das Beispiel geht vom üblichen Installationspfad aus; passen Sie ihn an, falls sich sgdm.exe an einem anderen Ort befindet. Die äußeren einfachen Anführungszeichen bewahren die inneren doppelten Anführungszeichen und die Platzhalter von Git im gespeicherten Befehl, auch bei Pfaden mit Leerzeichen.
Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.
git config --global diff.tool diffmerge
git config --global merge.tool diffmerge
git config --global difftool.diffmerge.cmd '"C:/Program Files/SourceGear/Common/DiffMerge/sgdm.exe" "$LOCAL" "$REMOTE"'
git config --global mergetool.diffmerge.cmd '"C:/Program Files/SourceGear/Common/DiffMerge/sgdm.exe" --merge --result="$MERGED" "$LOCAL" "$BASE" "$REMOTE"'
Diese Befehle ändern Ihre globale .gitconfig. Lassen Sie --global weg, wenn Sie einen Wert stattdessen nur für das aktuelle Repository festlegen möchten. Sie können .gitconfig auch direkt bearbeiten. Die beiden Befehlswerte lauten dann "C:/Program Files/SourceGear/Common/DiffMerge/sgdm.exe" "$LOCAL" "$REMOTE" und "C:/Program Files/SourceGear/Common/DiffMerge/sgdm.exe" --merge --result="$MERGED" "$LOCAL" "$BASE" "$REMOTE".
Die Befehlszeilenreferenz zu DiffMerge beschreibt den Modus --merge und die Option --result. Der in den Plattformbeispielen verwendete Zusammenführungsbefehl folgt dieser Syntax: Zuerst wird der Ergebnispfad übergeben, danach folgen die lokale, die Basis- und die Remote-Datei.
DiffMerge unter macOS einrichten
Prüfen Sie den Speicherort der ausführbaren Datei mit command -v diffmerge. Die folgenden Befehle verwenden /usr/local/bin/diffmerge, den Pfad aus dem bereitgestellten Beispiel. Ersetzen Sie ihn in beiden Befehlswerten durch den auf Ihrem Mac ausgegebenen Pfad, falls dieser abweicht. Die einfach zitierten Werte bewahren die eingebetteten Anführungszeichen und die Platzhalter von Git in .gitconfig.
Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.
git config --global diff.tool diffmerge
git config --global merge.tool diffmerge
git config --global difftool.diffmerge.cmd '"/usr/local/bin/diffmerge" --nosplash "$LOCAL" "$REMOTE"'
git config --global mergetool.diffmerge.cmd '"/usr/local/bin/diffmerge" --merge --result="$MERGED" "$LOCAL" "$BASE" "$REMOTE"'
DiffMerge unter Ubuntu einrichten
Prüfen Sie den Speicherort der ausführbaren Datei mit command -v diffmerge. Die folgenden Befehle verwenden /usr/bin/diffmerge, den Pfad aus dem bereitgestellten Beispiel. Ersetzen Sie ihn in beiden Befehlswerten, falls Ihre Installation einen anderen Pfad meldet. Die einfach zitierten Werte bewahren die eingebetteten Anführungszeichen und die Platzhalter von Git in .gitconfig.
Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.
git config --global diff.tool diffmerge
git config --global merge.tool diffmerge
git config --global difftool.diffmerge.cmd '"/usr/bin/diffmerge" --nosplash "$LOCAL" "$REMOTE"'
git config --global mergetool.diffmerge.cmd '"/usr/bin/diffmerge" --merge --result="$MERGED" "$LOCAL" "$BASE" "$REMOTE"'
Setzen Sie mergetool.keepBackup nur dann auf false, wenn Git keine Sicherungskopie behalten soll. Während Sie sich mit dem Ablauf vertraut machen, kann es hilfreich sein, Sicherungskopien aufzubewahren.
Git difftool und mergetool ausführen
Führen Sie nach der Konfiguration des Tools git difftool aus, um Vergleiche geänderter Dateien zu öffnen. Um ein bestimmtes Revisionspaar oder eine einzelne Datei zu vergleichen, geben Sie Revisionen und einen Pfad an, zum Beispiel git difftool main feature -- src/app.py. Bei einem Zusammenführungskonflikt führen Sie git mergetool aus oder beschränken den Aufruf mit git mergetool -- src/app.py auf einen Pfad. Für diese Befehle sind die betreffenden Revisionen oder ein aktiver Zusammenführungskonflikt erforderlich; die Konfiguration allein erzeugt keinen Vergleich.
Führen Sie das folgende eigenständige Beispiel aus, um eine temporäre Konfiguration für Git zu schreiben und das ausgewählte Tool auszulesen. Die Ausgabe ist diffmerge; dieser Toolname bleibt im unveränderten Beispiel erhalten.
Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.
config_file="$(mktemp)"
trap 'rm -f "$config_file"' EXIT
git config --file "$config_file" diff.tool diffmerge
git config --file "$config_file" --get diff.tool
Konfiguration und Dateiargumente verstehen
Prüfen Sie die wirksame Einstellung mit git config --global --get diff.tool oder öffnen Sie die globale Datei mit git config --global -e. Die Konfigurationseinträge wählen DiffMerge als Tool für Git aus. Die Werte für *.cmd legen fest, wie Git das Tool startet. Prüfen Sie, ob der konfigurierte Pfad zur ausführbaren Datei gültig ist und ob Pfade, die Leerzeichen enthalten können, in Anführungszeichen stehen.
Git übergibt $LOCAL und $REMOTE als die beiden Seiten des aktuellen Vergleichs oder Zusammenführungsvorgangs. Welche Bedeutung sie haben, hängt vom Vorgang und den beteiligten Revisionen ab; sie stehen also nicht immer für die Original- beziehungsweise die geänderte Datei. Bei einer Zusammenführung bezeichnet $BASE die Eingabe des gemeinsamen Vorfahren und $MERGED die Datei, in der das aufgelöste Ergebnis abgelegt werden soll. Der Zusammenführungsbefehl muss alle vier Pfade in der von DiffMerge erwarteten Reihenfolge übergeben. Behalten Sie diese Platzhalter im gespeicherten Befehl bei und ersetzen Sie sie nicht durch konkrete Dateinamen. Wenn Toolpfad, Befehlsnamen und Argumentreihenfolge für Ihre Plattform konfiguriert sind, können git difftool und git mergetool DiffMerge für ihre jeweiligen Aufgaben starten.