2

当我运行git-diffallhttps://github.com/thenigan/git-diffall)或git difftool --dir-diff(都引用自@Tim Henigan 的 SO 帖子)时,我收到以下错误:

没有足够的论据进行三向比较。

我的配置是:

  • GitHub for Windows 1.2.6.4 f054d9f(位于 msysgit 1.8.4 之上)
  • Araxis Merge 2013 专业版 2013.4296
  • GitHub for Windows 附带的 Posh Git PowerShell 提示符

非常奇怪的是,这个完全相同的设置可以在我的另一台机器上运行。

两者都git config --global diff.toolgit 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 的,因此不知道如何进一步解决这个问题。

我需要执行哪些步骤来更正我的配置,以便我可以使用 Araxis Merge 进行目录比较?

4

1 回答 1

1

在放下它并在一段时间后回到它之后,我发现了我的问题的原因。虽然我上面的研究是准确的,但它并没有揭示整个故事。经过一番挖掘,我发现了原因。

我在 和 的输出之间进行了比较,git config --global -lgit 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 -eand进行了实际编辑,git config --local -e因此不会错误地编辑正确的文件。

于 2014-03-06T04:56:37.113 回答