当我运行git-diffall
(https://github.com/thenigan/git-diffall)或git difftool --dir-diff
(均来自@Tim Henigan's SO post)时,我收到以下错误:
我的配置是:
非常奇怪的是,这个完全相同的设置适用于我的其他机器。
git config --global diff.tool
和git config --local diff.tool
都按预期返回“araxis”。
实际的本地repo配置包含以下部分:
[diff]
tool = araxis
[difftool "araxis"]
path = C:/Program Files/Araxis/Araxis Merge/compare.exe
prompt = false
[merge]
tool = araxis
[mergetool "araxis"]
path = C:/Program Files/Araxis/Araxis Merge/compare.exe
我不确定参数实际上是如何传递给Araxis的,因此不知道如何进一步解决这个问题。
我需要执行哪些步骤来更正配置,以便我可以使用Araxis Merge进行目录比较?
答案 0 :(得分:1)
在放下它并在一段时间后回到它之后,我发现了我的问题的原因。虽然我上面的研究是准确的,但并没有揭示整个故事。经过一番挖掘,我发现了原因。
我在git config --global -l
和git config --local -l
的输出之间做了一个差异,并意识到我的difftools有一些冲突(和错误)的配置。我不确定他们是如何失去同步但他们完全不同的是死去的赠品。
我的全局配置如下所示:
[merge]
tool = Araxis
[mergetool "kdiff3"]
path = c:/Program Files (x86)/KDiff3/kdiff3.exe
[diff]
guitool = araxis
tool = araxis
[difftool "kdiff3"]
path = c:/Program Files (x86)/KDiff3/kdiff3.exe
[difftool]
prompt = false
[difftool "Araxis"]
path = C:/Program Files/Araxis/Araxis Merge/Compare.exe
cmd = \"c:/Program Files/Araxis/Araxis Merge/Compare.exe\" -wait -merge -3 -a1 \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"
[mergetool "Araxis"]
path = C:/Program Files/Araxis/Araxis Merge/Compare.exe
cmd = \"c:/Program Files/Araxis/Araxis Merge/Compare.exe\" -wait -merge -3 -a1 \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"
[difftool "araxis"]
path = C:/Program Files/Araxis/Araxis Merge/Compare.exe
cmd = \"c:/Program Files/Araxis/Araxis Merge/Compare.exe\" -wait -merge -3 -a1 \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"
我将其替换为本地配置的内容(在OP中发布),并从我的本地配置中删除了我的工具配置。
这样做之后,我的问题就完全消失了。
我使用git config --global -e
和git config --local -e
进行了实际编辑,因此没有错误编辑正确的文件。