2012-09-25 16 views
13

Oft wenn ich Diffs mache, möchte ich meine lokale Datei vor dem Commit bearbeiten. Dies funktioniert sehr gut in der Vergleichsansicht von Eclipse, da Sie damit die lokale Datei problemlos bearbeiten und Änderungen von der vorherigen Version kopieren können.Verwenden von kdiff3 zum Bearbeiten von Diffs mit Git

Ich versuche, git und kdiff3 auf die gleiche Weise zu arbeiten. Es funktioniert wie erwartet, wenn ich kdiff3 als mein Mergetool verwende. Wenn ich es jedoch als das difftool einstelle, gibt es mir eine schreibgeschützte Ansicht, so dass ich keine Änderungen vornehmen kann. Laut der Dokumentation (http://kdiff3.sourceforge.net/doc/documentation.html) würde ich erwarten, dass die --output Option mir die beiden Datei zusammenführen ich will, aber es nicht. Der relevante Teil meines .gitconfig:

[diff] 
    tool = kdiff3 
[difftool "kdiff3"] 
    cmd = /Applications/kdiff3.app/Contents/MacOS/kdiff3 $LOCAL $REMOTE --output $LOCAL 
    trustExitCode = false 
+1

Haben Sie das '' '' '' in '$ LOCAL' und' $ REMOTE', oder zumindest '' '' um $ LOCAL' und '$ REMOTE'? – VonC

+0

Ich habe das versucht und habe die Das gleiche Ergebnis, danke für den Vorschlag. –

Antwort

7

Ich kann die in Baum-Datei verwenden kdiff3 zu bearbeiten, wenn ich den folgenden Befehl verwenden:

kdiff3 $LOCAL $REMOTE --output $MERGED 

kdiff3 ist in meinen $PATH, so das wichtige Bit ist es, die Ausgabe von $LOCAL zu ändern, um stattdessen zu sein.

Vom git-difftool manpage:

...the configured command line will be invoked with the following 
variables available: $LOCAL is set to the name of the temporary file 
containing the contents of the diff pre-image and $REMOTE is set to 
the name of the temporary file containing the contents of the diff 
post-image. $MERGED is the name of the file which is being compared. 

Seit Einstellung der Ausgabe auf $LOCAL in eine temporäre Datei schreiben wird, werden Sie stattdessen $MERGED schreiben möchten, da dies die eigentliche „lokal "In-Baum-Datei.

Verwandte Themen