我想要git diff
并将常规的逐行差异与git diff --word-diff
结合起来。逐行差异的问题在于,如果我更改了一两个单词并保持该行基本完整,那么它们就没有必要了——分块太粗糙了。另一方面,如果我改变整行并使用--word-diff
,有时diff算法会感到困惑,并吐出令人难以置信的令人困惑的diffs,插入和删除许多单词以"变形"一行到另一行。
是否有一种方法可以指定git
应该是聪明的,只有--word-diff
,如果它实际上是有意义的这样做(在逐行基础上,当然)?
我发现git diff --word-diff
或git diff --color-words
最聪明的事情是git附带的预定义模式(如--word-diff-regex
或diff.wordregex
中使用的)。它们可能不完美,但在AFAICT中给出了相当好的结果。
.gitattributes
的文档中给出了预定义的diff驱动程序列表(它们都有预定义的单词正则表达式)。
因此,要激活所有你仍然需要通过.gitattributes
来启用属性机制。
*.py
文件的python
模式,可以在repo根目录下发出以下命令:
echo "*.py diff=python" >> .gitattributes
如果您对不同的预设模式实际看起来像什么感兴趣,请查看git的源代码