由DiffMerge Git配置difftool和mergetool不工作

由DiffMerge Git配置difftool和mergetool不工作

问题描述:

我想配置DiffMerge git用于difftool和mergetool。我用下面的命令: -由DiffMerge Git配置difftool和mergetool不工作

在命令提示符窗口中下面的命令将更新您的.gitconfig配置GIT使用DiffMerge:

C:\> git config --global diff.tool diffmerge 

C:\> git config --global difftool.diffmerge.cmd 

    "C:/Program\ Files/SourceGear/Common/DiffMerge/sgdm.exe \"$LOCAL\" 
    \"$REMOTE\""` 

如果我检查的.gitconfig它的内容有以下: -

` [diff] 
     tool = diffmerge 
    [mergetool "diffmerge"] 
     cmd = C:/Program\\ Files/SourceGear/Common/DiffMerge/sgdm.exe -merge -result=\"\" \"\" \"\" \"\" 
     trustExitCode = true 
    [merge] 
     tool = diffmerge 
    [difftool "diffmerge"] 
     cmd = C:/Program\\ Files/SourceGear/Common/DiffMerge/sgdm.exe \"\" \"\" 
    [core] 
     autocrlf = true 
     excludesfile = C:\\Users\\dev\\Documents\\gitignore_global.txt 
    [user] 
     name = DESKTOP - VAFJEG6\\dev 
      email = [email protected] ` 

如果我尝试$混帐配置--global --list: -

diff.tool=diffmerge 
    mergetool.diffmerge.cmd=C:/Program\ 
    Files/SourceGear/Common/DiffMerge/sgdm.exe -merge -result="" "" "" "" 
    mergetool.diffmerge.trustexitcode=true 
    merge.tool=diffmerge 
    difftool.diffmerge.cmd=C:/Program\ 
    Files/SourceGear/Common/DiffMerge/sgdm.exe "" "" 
    core.autocrlf=true 
    core.excludesfile=C:\Users\dev\Documents\gitignore_global.txt 
    user.name=DESKTOP-VAFJEG6\dev 
    [email protected]` 

如果我尝试git的命令$ git difftool这表明此对话框: -

enter image description here

有什么不对?如何正确配置它?

$LOCAL/$REMOTEmentioned in the doc必须已经由shell解释(如果从git bash代替CMD会话类型),并通过""取代。

直接编辑全局配置(git config --global --edit)并添加缺少的元素来获得:

[difftool "DiffMerge"] 
    cmd = 'C:/Program Files/SourceGear/Common/DiffMerge/sgdm.exe' "$LOCAL" "$REMOTE" 
[merge] 
    tool = DiffMerge 
[mergetool "DiffMerge"] 
    cmd = 'C:/Program Files/SourceGear/Common/DiffMerge/sgdm.exe' -merge -result="$PWD/$MERGED" "$PWD/$LOCAL" "$PWD/$BASE" "$PWD/$REMOTE" 
    trustExitCode = true