为什么我无法为Git配置外部difftool或mergetool?

为什么我无法为Git配置外部difftool或mergetool?

问题描述:

我正在尝试在Windows 10下为Git配置一个外部difftool和mergetool。为什么我无法为Git配置外部difftool或mergetool?

一切都会告诉我输入两个Git命令,如下所示。 有人说要使用wrapper.sh,而其他人则说这不是必要的。

git config --global diff.tool diffmerge 

(第二行看起来是这样的:)

git config --global difftool.diffmerge.cmd "path to sgdm.exe or some_wrapper.sh" $LOCAL $REMOTE** 

这对我不起作用。我也试过:

git config --global difftool.diffmerge.cmd C:/Program\ Files/SourceGear/Common/DiffMerge/sgdm.exe \"$LOCAL\" \"$REMOTE\" 

git config --global difftool.diffmerge.cmd C:/Program\ Files/SourceGear/Common/DiffMerge/sgdm.exe "$LOCAL" "$REMOTE" 

git config --global difftool.diffmerge.cmd "C:/Program\ Files/SourceGear/Common/DiffMerge/sgdm.exe $LOCAL $REMOTE" 

我的配置文件看起来像这样:

[filter "lfs"] 

     clean = git-lfs clean %f 
     smudge = git-lfs smudge %f 
     required = true 
[user] 

     name= John Doe 
[diff] 

     tool = dm 
[difftool] 

     prompt = true 
[difftool "dm"] 

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

我在做什么错?

+0

你的配置文件是什么样的?我担心,当你使用这些命令写入它时,最终会丢失Program \ Files中的'\'而构成错误的路径。我猜这个文件是在%HOME%.gitconfig但我不使用windows。 – Fabio

+0

格式化编码 –

+0

我终于明白了! – Ag71191

这听起来像你可能会很乐意与一个完整的GUI客户端。我已使用Sourcetreeexternal merge tools(在OSX上)集成。事实上,Sourcetree的in-built merge tool也很棒。

检查您的全球.gitconfig文件以确保路径以正确格式结尾(带有空格的路径引号等)。

这是我从我的配置文件中的相关部分:

[diff] 
    tool = vsdiffmerge 
[difftool] 
    prompt = true 
[difftool "vsdiffmerge"] 
    cmd = \"C:\\Program Files (x86)\\Microsoft Visual Studio 11.0\\Common7\\IDE\\vsdiffmerge.exe\" \"$LOCAL\" \"$REMOTE\" //t 
    keepbackup = false 
    trustexistcode = true 
[merge] 
    tool = vsdiffmerge 
[mergetool] 
    prompt = true 
[mergetool "vsdiffmerge"] 
    cmd = \"C:\\Program Files (x86)\\Microsoft Visual Studio 11.0\\Common7\\IDE\\vsdiffmerge.exe\" \"$REMOTE\" \"$LOCAL\" \"$BASE\" \"$MERGED\" //m 
    keepbackup = false 
    trustexistcode = true