git smart line和word diff

时间:2014-08-14 01:54:31

标签: regex git diff line-by-line word-diff

我想git diff并将常规的逐行差异与git diff --word-diff结合起来。逐行差异的问题在于,如果我改变一个或两个单词并且保持线条大部分完整,则它们是不必要的 - 分块太粗糙。另一方面,如果我改变整行并使用--word-diff,有时diff算法会混淆并吐出令人难以置信的混乱差异,插入和删除大量单词以“将”变换为另一行。

有没有办法指明git应该对此明智,只有--word-diff才真正有意义(当然,逐行)?< / p>

1 个答案:

答案 0 :(得分:3)

我为git diff --word-diffgit diff --color-words找到的最聪明的事情是git 附带的预定义模式(在--word-diff-regex或{{1}中使用) })。他们给AFAICT带来了很好的结果。

预定义的差异驱动程序列表(它们都具有预定义的单词正则表达式)在docs for .gitattributes中给出。进一步说明

  

您仍需要使用属性机制通过.gitattributes

启用此功能

因此,要激活所有diff.wordregex文件的python模式,您可以在repo根目录中发出以下命令(在Windows下省略引号):

*.py

如果您对不同预设模式的实际情况感兴趣,请查看git's source code