【问题标题】:git diff :: overriding .gitconfig external toolgit diff :: 覆盖 .gitconfig 外部工具
【发布时间】:2013-11-25 00:22:42
【问题描述】:

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

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

...git-meld 是:

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

但有时(例如,在差异非常小的情况下,或者如果我想轻松地从差异文本中复制粘贴某些内容)我只想查看 shell 上的差异并避免 meld 的生成延迟。

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

【问题讨论】:

    标签: git git-diff meld


    【解决方案1】:

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

    -c =

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

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

    git diff --no-ext-diff
    

    【讨论】:

      【解决方案2】:

      另一种选择是使用git difftool,它与git diff 类似,但始终使用GUI 工具(默认情况下会提示您使用)。

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

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

      我喜欢做的是离开diff.externalunset,,然后当我想要 GUI 差异时使用 git difftool,而当我不需要时只使用 git diff

      您也可以通过发送关闭git difftool 的提示:

      git config --global difftool.prompt false

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-09-17
        • 1970-01-01
        • 2011-02-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-15
        相关资源
        最近更新 更多