Kdiff3 won't open with mergetool command

后端 未结 5 1982
我在风中等你
我在风中等你 2021-02-07 01:26

I have conflicts, so I type:

git mergetool

I then get a message saying:

Hit return to start merge resolution tool

相关标签:
5条回答
  • 2021-02-07 01:31

    I realize this is old, but for future googlers, KDiff3 also has an option where if the merge is trivial, it will resolve it silently and never even show a window.

    I've had that happen to me in the past, so it might be what's happening for you. I think the option is called 'Auto save and quit on merge without conflicts'.

    0 讨论(0)
  • 2021-02-07 01:31

    Git has --auto hard coded as a command-line option to KDiff3, which causes the GUI not to show up if all conflicts are auto-resolvable by KDiff3.

    We can change this default behavior by setting:

    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\""
    

    which result in the ~/.gitconfig file (or you can directly modify the file):

    [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
    

    In this way, the kdiff3 will alway open whether there is still unsolved conflicts left.

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

    0 讨论(0)
  • 2021-02-07 01:47

    Yet another answer for future Googlers:

    Actually, no external merge tool will start. An issue was filed in August 2015: https://jira.atlassian.com/browse/SRCTREEWIN-3543

    0 讨论(0)
  • 2021-02-07 01:50

    Again, for future Googlers:

    As of version 2.48.02 (29 November 2014), Git Extensions started distributing the 64-bit version of kdiff3. (See https://github.com/gitextensions/gitextensions/blob/master/GitUI/Resources/ChangeLog.md#version-24802-29-november-2014.)

    So if you're running a 32-bit OS and had the Git Extensions installer install kdiff3, your kdiff3 won't even run by itself. The solution is to download the 32-bit version (http://sourceforge.net/projects/kdiff3/files/kdiff3/) and reinstall. I didn't even need to uninstall the 64-bit version first, as the installer simply overwrote the previous install.

    0 讨论(0)
  • 2021-02-07 01:56

    I haven't used git for this purpose on Windows in a while, but your config file shows some interesting differences re: program strings.

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

    vs

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

    I suspect that there might be some issue with the spaces in the program name. Try setting your diff/mergetool executable paths to:

    path = \"c:/Program Files (x86)/KDiff3/kdiff3.exe\"
    
    0 讨论(0)
提交回复
热议问题