在调用git diff时动态设置不同的diff工具

3

当调用git diff时,是否可以动态地设置不同的差异工具,甚至使用shell变量?

我指的不是改变(持久化)git-config配置,而是在“调用时”更改它,例如:

Original Answer翻译成"最初的回答"

$ git diff oldbranch --diff-tool=path-to-my-diff-tool
$ GIT_DIFF_TOOL=path git diff oldbranch
$ export GIT_DIFF_TOOL=path; git diff oldbranch
2个回答

4
也许不完全一样,但你可以获得完全相同的效果。(也许那就是“完全”的效果。:-))不要使用 git config diff.tool sometool 来更改本地持久化配置,而是使用例如 git -c diff.tool=sometool difftool ... 更改用于此 Git 命令的配置。
任何你可能永久更改的内容都可以使用 git -c name=value 暂时更改,只在一个 Git 命令运行期间有效。
编辑:请注意,git difftool 本身有一个 -t tool 参数,所以这个特定的例子有点儿愚蠢。我只是在这里使用它来展示如何使用 -c name=value 技巧。

我以前从来没有使用过“-c”标志。只是尝试了一下git diffgit difftool,只有在difftool中才有效。然而,我很新在于difftool,之前不知道它的存在,并且文档中说也有一个独占参数“-tool”,两种方式在difftool中都可以工作:git difftool -tool=yourtool -- file.c - Luciano
Torek 的解决方案当然很棒,我可能因为无知而说错了什么可是......git difftool --tool='sometool' <branch>不就是用于基础选项吗?还是有区别吗? - Romain Valeri
@RomainValeri,实际上我自己并没有使用 git difftool,但是是的,这并不是一个很好的例子,因为它有 -t / --tool。我只是用它作为一个例子,说明在哪里使用 -c name=value 与将 name 配置为 value 具有相同的效果。 - torek

0

只是在这里添加一下,因为它从技术上也回答了这个问题。

git difftool --tool='sometool' <branch>
# or
git difftool -t 'sometool' <branch>

请查看--tool(文档)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接