Manchmal muss ich Git-Merges auf der Konsole machen. Bisher habe ich zum Lösen von Konflikten FileMerge von Xcode 3 verwendet (Sie können es auf der Konsole mit dem Befehl „opendiff“ öffnen). Wenn Konflikte auftreten, verwende ich „git mergetool“, das automatisch opendiff für jede der widersprüchlichen Dateien aufruft.
Xcode 4 bietet jedoch eine viel schönere Mergetool-Komponente zum Lösen von Konflikten. Ich glaube, diese Komponente ist eher Teil der ausführbaren Xcode 4-Datei als eigenständig. Sie können die zusammengeführte Datei in der Vorschau anzeigen und den zusammengeführten Code von Fall zu Fall direkt bearbeiten, wodurch das Zusammenführen komplexer Konflikte unglaublich schnell und zufriedenstellend wird.
Gibt es eine Möglichkeit, das Mergetool von Xcode 4 zu verwenden, wenn „git mergetool“ vom Terminal aus aufgerufen wird?
Ich kann keine ausführbare Datei für dieses Tool im Xcode 4-Bundle finden. Jeder Hack, der dies erreicht, wäre willkommen.
opendiff nimmt zwei Dateinamen-Argumente und einen --ancestor-Parameter mit einem dritten Dateinamen, um einen Drei-Wege-Diff zu erzeugen, und einen --merge-Parameter, um die Ausgabedatei anzugeben, die für die Konfliktlösung verwendet werden soll.
Also geh:
[mergetool "opendiff"]
cmd = "opendiff \"$LOCAL\" \"$REMOTE\" \"$(if test -f \"$BASE\"; then echo \"--ancestor $BASE\"; else echo \"--ancestor $LOCAL\"; fi)\" --merge=\"$MERGED\" "
[merge]
tool = opendiff
Das sollte git dazu bringen, opendiff als Merge-Tool zu verwenden, wenn Merge-Konflikte auftreten.
Allerdings bevorzuge ich SEHR viel DiffMerge von SourceGear , einem kostenlosen Diff- und Drei-Wege-Merge-Tool, das eine viel bessere, wortorientierte Konfliktlösung bietet. Und in der Dokumentation von DiffMerge gibt es etwas, was man Git mitteilen muss, um es zum Standardwerkzeug zum Vergleichen und Zusammenführen zu machen.
Sie können im (sehr einfachen) Texteditor in FileMerge bearbeiten, indem Sie das Editorfenster öffnen – das standardmäßig geschlossen ist. Um den Editor in FileMerge zu öffnen, ziehen Sie den Punkt unter der mittleren Diff-Spalte nach oben, um das Editorfenster zu öffnen.
Dies hat am Ende für mich funktioniert
[merge]
tool = opendiff
[mergetool]
keepBackup = false
[mergetool "opendiff"]
cmd = "opendiff \"$LOCAL\" \"$REMOTE\" -merge \"$MERGED\""
Ricardo Sánchez-Saez