【问题标题】:How can I use `git diff --color-words` outside a Git repository?如何在 Git 存储库之外使用 `git diff --color-words`?
【发布时间】:2011-08-03 23:38:14
【问题描述】:

我怎样才能在git diff --color-words 中获得输出,但在 Git 之外?

最接近的是wdiff -t,但它强调/反转事物而不是使用绿色/红色,并且不允许指定我的空白正则表达式。

【问题讨论】:

    标签: git colors diff word word-diff


    【解决方案1】:
    git diff --color-words --no-index old.txt new.txt
    

    【讨论】:

    • 来自手册页:“如果给出了两个路径并且至少有一个点在当前存储库之外,git diff 将比较两个文件/目录。这种行为可以通过 --no-index 强制。” (很多时候你甚至不需要--no-index。)
    • 至少在我的git 1.9.3中,顺序应该是git diff --no-index --color-words
    • 在我的 git v1.9.3 中,--no-index--color-words 的顺序无关紧要......(实际上我现在找不到没有 --no-index 就失败的案例)。
    • 效果很好。也许我们可以添加一个别名alias diff="git diff --no-index"
    【解决方案2】:

    您可以说git diff --color=always --color-words,它将在输出中为您提供颜色转义码。不过,您将有一些外壳来解释颜色代码……

    【讨论】:

    • 问题是关于在 Git 存储库之外使用它。当--color-words=always 而不仅仅是--color-words 时,它也会遗漏一些东西。
    • @vi: 对不起,你只说 »outside git«,它没有提到任何地方的存储库。我认为这是关于在 git 旁边的其他应用程序中使用颜色(例如管道时)——这也是“在 git 之外”,在“不在默认的 git 工具链/工具集合内”的意义上
    【解决方案3】:

    根据 Jefromi 的评论,您可以使用

    git diff --color-words file1 file2
    

    也在 git 存储库之外。

    【讨论】:

    • git diff 在上面提到的两个仲裁文件上不起作用。 (git 版本 1.7.4)。虽然git diff --color-words --no-index <file1> <file2> 有效,但正确的方法是使用专门用于此目的的 wdiff (gnu.org/software/wdiff)
    • @Manu No,git diff 就是为此目的而设计的。 wdiff 只是一个黑客。有时阅读您的链接。
    • git diff 非常好,但上面提到的 wdiff 页面并没有说这是一个 hack。根据从该页面链接的自己的文档,wdiff“非常成熟”:gnu.org/software/wdiff/manual/wdiff.html
    【解决方案4】:

    如果我在 git 存储库中(git v2.3.3):

    • git diff --color-words 不起作用(无输出)
    • git diff --no-index 不接受 --color-words 也不接受 --color 参数

    可以使用 wdiff,配置为使用颜色,而不是下划线:

    wdiff -n \
      -w $'\033[30;31m' -x $'\033[0m' \
      -y $'\033[30;32m' -z $'\033[0m' \
      … | less -R
    

    来源:https://www.gnu.org/software/wdiff/manual/html_node/wdiff-Examples.html(修改为使用前景色而不是背景色)

    希望对你有帮助。

    【讨论】:

    • 为什么git --no-index --color-words 失败了?我用过它(虽然是早期的 Git 版本)。
    【解决方案5】:

    Git 版本 1.9.1:

    git diff --word-diff=color fileA fileB

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-28
      • 2012-06-08
      • 1970-01-01
      • 2012-08-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多