我想git diff并将常规的逐行diff与git diff –word-diff结合起来.逐行差异的问题在于,如果我改变一个或两个单词并且保持线条大部分完整,则它们是不必要的 – 分块太粗糙.另一方面,如果我改变整行并使用–word-diff,有时diff算法会混淆并吐出令人难以置信的混乱差异,插入和删除大量单词以“变换”一行到另一行.
有没有办法指定git应该是聪明的,只有–word-diff,如果它实际上是有意义的(当然,在逐行的基础上)?
解决方法
我发现git diff –word-diff或git diff –color-words最聪明的东西是git附带的预定义模式(在–word-diff-
regex或diff.word
regex中使用).他们给AFAICT带来了不错的成绩.
在docs for .gitattributes
中给出了预定义的差异驱动程序列表(它们都具有预定义的单词正则表达式).进一步说明了
you still need to enable this with the attribute mechanism,via .gitattributes
因此,要激活所有* .py文件的python模式,可以在repo根目录中发出以下命令(省略Windows下的引号):
echo '*.py diff=python' >> .gitattributes
如果您对不同预设模式的实际情况感兴趣,请查看git’s source code