5

我显然在这里忽略了一些非常简单的东西,但我没有看到它。命令

webstorm diff ~/test.txt ~/test2.txt

运行 JetBrains 图形差异工具。我正在运行 git 1.8.3.2 并且有一个 git .config 包含

[diff]
    tool = webstorm
[difftool "webstorm"]
    cmd = webstorm diff $(cd $(dirname "$LOCAL") && pwd)/$(basename "$LOCAL") $(cd $(dirname "$REMOTE") && pwd)/$(basename "$REMOTE")
[difftool]
    prompt = false

当我运行命令时

git difftool ~/test.txt ~/test2.txt

我在终端窗口中得到以下信息:

diff --git a/home/mark/test.txt b/home/mark/test2.txt
index 7379ce2..6ce16f1 100644
--- a/home/mark/test.txt
+++ b/home/mark/test2.txt
@@ -1,2 +1,2 @@
-blah
+bluergh

我在做什么错/不做什么?

4

2 回答 2

3

跑:

GIT_TRACE=1 git difftool --tool-help

打印可与 一起使用但不可用的差异工具列表--tool


其次,我相信以下简化示例可能会更好:

[difftool "webstorm"]
  cmd = webstorm diff "$LOCAL" "$REMOTE"

或者通过指定二进制文件或脚本的路径,例如

[difftool]
  prompt = NO
  external = /usr/local/bin/diffmerge

通过以下方式检查差异配置:

git config --get-regex diff

或更具体地说(替换webstorm为您的工具名称):

git config --get difftool.webstorm.cmd

如果仍然不起作用,请在新存储库上对其进行测试,例如通过以下命令:

mkdir ~/git_test && cd ~/git_test
git init && touch file && git add file && git commit -m'Adds file' -a
echo changed >> file
GIT_TRACE=1 git difftool

如果上述方法有效,请确保您的存储库配置没有任何意外,例如

more "$(git rev-parse --show-toplevel)"/.git/config

如果您处于合并状态(检查git status),则需要使用mergetool,例如

git mergetool

添加-t tool以指定哪个工具。可用的列表git mergetool --tool-help


另见man git-difftool

CONFIG VARIABLES
       git difftool falls back to git mergetool config variables when the difftool equivalents have not been
       defined.

       diff.tool
           The default diff tool to use.

       diff.guitool
           The default diff tool to use when --gui is specified.

       difftool.<tool>.path
           Override the path for the given tool. This is useful in case your tool is not in the PATH.

       difftool.<tool>.cmd
           Specify the command to invoke the specified diff tool.

           See the --tool=<tool> option above for more details.

       difftool.prompt
           Prompt before each invocation of the diff tool.
于 2017-08-17T21:54:20.877 回答
0

我只是有同样的问题。我的git diftool配置已在我的配置中设置~/.gitconfig并且工作正常,但今天奇怪地git difftool在一个仓库中工作但git diff在另一个仓库中运行。

修复:我从 git 2.11.0 更新到 git 2.11.1,问题似乎已经消失。

git 2.11.1 发行说明提到修复与 difftool 相关的回归。所描述的问题不是我所看到的,但也许修复解决了它。

于 2017-02-18T11:31:56.157 回答