git diff :: overriding .gitconfig外部工具

时间:2013-11-12 17:41:35

标签: git git-diff meld

我已将git配置为使用meld作为外部差异工具:

$ cat ~/.gitconfig | grep -A2 "\[diff\]"
[diff]
        tool = vimdiff
        external = git-meld

...其中git-meld是:

$ cat $(which git-meld)
#!/bin/bash
meld $2 $5

然而有时(例如在非常小的差异或者我想从diff文本中轻松复制粘贴的东西)我只想看到shell上的差异并避免meld的产生延迟

是否有办法(例如命令行参数)覆盖.gitconfig设置并指示git只做一个简单的纯文字差异?

2 个答案:

答案 0 :(得分:18)

对于您的一般问题:几乎所有选项都可以使用-c在命令行上覆盖:

  

-c< name> =< value>

     

将配置参数传递给命令。给定的值将覆盖配置文件中的值。 < name>预期格式与git config列出的格式相同(以点分隔的子键)。

那就是说diff.external是个问题。您可以更改其值,但无法在命令行上取消设置(我可以看到)。但是,git diff确实有一个自定义选项可以忽略diff.external设置:您可以使用

git diff --no-ext-diff

答案 1 :(得分:8)

另一种选择是使用git difftool,就像git diff一样,但总是使用GUI工具(默认情况下会提示您使用)。

当您使用git diff时,git会使用diff.external中指定的工具。

当您使用git difftool时,git会使用diff.tool中指定的工具。

我喜欢做的是让diff.external 取消设置,然后在我需要GUI差异时使用git difftool,当我不想时只使用git diff吨。

您也可以通过发送:

关闭git difftool的提示
  

git config --global difftool.prompt false