2011-04-12 27 views

回答

82

git diff --color-words --no-index

+5

从手册页:“如果正好有两个路径,并给出当前仓库外的至少一个点,git的差异会比较两个文件/目录。这种行为可以通过--no-index强制。“ (很多时候你甚至不需要'--no-index'。) – Cascabel 2011-04-12 15:59:34

+1

至少在我的git 1.9.3中,顺序应该是'git diff --no-index --color-words' – PhML 2014-05-29 13:16:09

+3

In我的'--no-index'和'--color-words'的git v1.9.3顺序无关紧要(实际上我现在找不到'--no-index'时失败了,所有)。 – 2014-05-29 17:32:03

1

你可以说git diff --color=always --color-words,这将给你在输出色彩转义码。你将有一定的外壳虽然解释颜色代码...

+0

问题是关于在Git存储库之外使用它的问题。当'--color-words = always'而不仅仅是'--color-words'时,它会遗漏一些东西。 – 2011-04-12 15:12:16

+0

@vi:对不起,你只说»outside git«,它没有提到任何地方的存储库。我认为这是关于在git旁边的其他应用程序(例如管道)上的颜色 - 这也是»外部git«,意义上»不在默认的git工具链/工具集合中« – knittl 2011-04-12 16:09:40

6

据Jefromi评论你可以使用

git diff --color-words file1 file2 

外git代码库了。

+5

git diff无法工作如上所述的两个仲裁文件。 (git版本1.7.4)。 尽管'git diff --color-words --no-index '有效,但正确的方法是使用wdiff,它是为此目的而设计的(http://www.gnu.org/software/wdiff/ ) – 2012-12-27 05:56:57

+2

@Manu否,'git diff'是为此目的而设计的。 'wdiff'只是一个黑客。有时阅读你的链接。 – Zenexer 2013-09-17 10:15:06

1

如果我是一个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(修改为使用前景色而非背景色)

希望它有帮助。

+0

为什么'git --no-index --color-words'失败?我用它(与早期的Git版本虽然)。 – 2015-03-20 14:34:43

1

Git版本1.9.1:

git diff --word-diff=color fileA fileB