我已将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
只做一个简单的纯文字差异?
答案 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