Kdiff3 wird nicht mit dem Mergetool-Befehl geöffnet

Lesezeit: 4 Minuten

Benutzer-Avatar
iKode

Ich habe Konflikte, also tippe ich:

git mergetool

Da bekomme ich eine Meldung:

Drücken Sie die Eingabetaste, um das Zusammenführungsauflösungstool zu starten

Wenn ich das mache, wird normalerweise kdiff3 geöffnet, damit ich die Unterschiede zusammenführen kann.

Wenn ich es jetzt mache, fährt es einfach mit der nächsten Datei fort und kdiff3 wird überhaupt nicht geöffnet.

Ich habe meine Git-Konfiguration und meinen Systempfad dreifach überprüft und alles scheint perfekt zu sein. Die Konfigurationsdatei lautet wie folgt:

 [merge]
    tool = kdiff3
 [mergetool "kdiff3"]
    path = c:/Program Files (x86)/KDiff3/kdiff3.exe
 [diff]
    guitool = kdiff3
 [difftool "kdiff3"]
    path = c:/Program Files (x86)/KDiff3/kdiff3.exe
 [core]
    editor = \"C:/Program Files (x86)/GitExtensions/GitExtensions.exe\" fileeditor   autocrlf = true
 [user]
    name = James Farrell
    email = [email protected]
 [github]
    user = whygosystems
    token = 87d00c2e613b3a7c8c1be817b75b8a33
 [diff]
    external = C:/Program Files (x86)/Git/cmd/git-diff-wrapper.sh

Hat jemand eine Idee, was falsch sein könnte?

Ich habe das Gefühl (obwohl ich mich irren könnte, dass dies ein Problem war, seit ich den neuen Github-Windows-Client installiert habe)….

  • Ich hatte dieses Problem von Zeit zu Zeit, und ein Neustart des Computers hat immer geholfen. Keine Ahnung warum.

    – eis

    4. Juni 2012 um 15:16 Uhr

  • @eis Danke, ich habe neu gestartet und es hat nicht geholfen.

    – iKode

    4. Juni 2012 um 15:19 Uhr

  • Hatte das gleiche Problem, bei mir hat dieser Workaround geholfen.

    – PiQuer

    4. April 2013 um 21:45 Uhr

Mir ist klar, dass dies alt ist, aber für zukünftige Googler hat KDiff3 auch eine Option, bei der, wenn die Zusammenführung trivial ist, sie stillschweigend aufgelöst wird und nicht einmal ein Fenster anzeigt.

Mir ist das in der Vergangenheit passiert, also könnte es das sein, was bei dir passiert. Ich denke, die Option heißt “Automatisch speichern und beim Zusammenführen ohne Konflikte beenden”.

  • Diese Option ist zwar der Übeltäter, wird aber immer ausgelöst, weil git aufruft kdiff3 mit dem --auto Flag, daher hilft es nicht, die Option in kdiff3 zu deaktivieren. Eine Problemumgehung finden Sie in meiner Antwort auf diese ähnliche Frage.

    – PiQuer

    4. April 2013 um 21:43 Uhr

Ich habe Git für diesen Zweck unter Windows seit einiger Zeit nicht mehr verwendet, aber Ihre Konfigurationsdatei zeigt einige interessante Unterschiede in Bezug auf: Programmzeichenfolgen.

[core]
    editor = \"C:/Program Files (x86)/GitExtensions/GitExtensions.exe\" fileeditor   autocrlf = true

vs

[difftool "kdiff3"]
    path = c:/Program Files (x86)/KDiff3/kdiff3.exe

Ich vermute, dass es ein Problem mit den Leerzeichen im Programmnamen geben könnte. Versuchen Sie, Ihre ausführbaren Diff/Mergetool-Pfade auf Folgendes einzustellen:

path = \"c:/Program Files (x86)/KDiff3/kdiff3.exe\"

Nochmals für zukünftige Googler:

Ab Version 2.48.02 (29. November 2014) begann Git Extensions mit der Verteilung der 64-Bit-Version von kdiff3. (Sehen https://github.com/gitextensions/gitextensions/blob/master/GitUI/Resources/ChangeLog.md#version-24802-29-november-2014.)

Wenn Sie also ein 32-Bit-Betriebssystem ausführen und das Installationsprogramm für Git-Erweiterungen kdiff3 installiert haben, wird Ihr kdiff3 nicht einmal von selbst ausgeführt. Die Lösung besteht darin, die 32-Bit-Version herunterzuladen (http://sourceforge.net/projects/kdiff3/files/kdiff3/) und neu installieren. Ich musste die 64-Bit-Version nicht einmal deinstallieren, da der Installer einfach die vorherige Installation überschrieb.

Benutzer-Avatar
YaOzI

Git hat --auto fest als Befehlszeilenoption für KDiff3 codiert, was verursacht die GUI nicht angezeigt wird, wenn alle Konflikte von KDiff3 automatisch aufgelöst werden können.

Wir können dieses Standardverhalten ändern, indem wir Folgendes einstellen:

git config --global mergetool.kdiff3NoAuto.cmd "/c/Program Files/KDiff3/kdiff3.exe --L1 \"\$MERGED (Base)\" --L2 \"\$MERGED (Local)\" --L3 \"\$MERGED (Remote)\" -o \"\$MERGED\" \"\$BASE\" \"\$LOCAL\" \"\$REMOTE\""

was zur Folge hat ~/.gitconfig Datei (oder Sie können die Datei direkt ändern):

[merge]
        tool = kdiff3
[mergetool "kdiff3"]
        path = C:/Program Files/KDiff3/kdiff3.exe
        trustExitCode = false
        cmd = \"/c/Program Files/KDiff3/kdiff3.exe\" --L1 \"$MERGED (Base)\" --L2 \"$MERGED (Local)\" --L3 \"$MERGED (Remote)\" -o \"$MERGED\" \"$BASE\" \"$LOCAL\" \"$REMOTE\"
[diff]
        guitool = kdiff3
[difftool "kdiff3"]
        path = C:/Program Files/KDiff3/kdiff3.exe
        trustExitCode = false

Auf diese Weise wird das kdiff3 immer öffnen, ob es noch ungelöste Konflikte gibt.

Siehe: https://stackoverflow.com/a/15813064/2303761

Noch eine Antwort für zukünftige Googler:

Tatsächlich wird kein externes Merge-Tool gestartet. Ein Problem wurde im August 2015 eingereicht: https://jira.atlassian.com/browse/SRCTREEWIN-3543

1187410cookie-checkKdiff3 wird nicht mit dem Mergetool-Befehl geöffnet

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy