考虑一个这样的简单文件:
COMMITED:
foo;
编辑:
bar;
现在,当我运行git diff --word-diff-regex="[a-z]+"
时,它会给我
[-foo-]{+bar+};
因此,它表明单词foo
已被bar
取代。请注意,分号未标记为已更改。没关系。
现在,如果我在文件中添加另一行:
bar;
qux;
以上不再适用:
$ git diff --word-diff-regex="[a-z]+"
预期输出:
[-foo-]{+bar+};
{+qux;+}
实际输出:
[-foo-]{+bar;+}
{+qux+};
请注意,第一行中的分号现在被视为单词的一部分。 docs州
这些匹配之间的任何内容都被视为空格并被忽略(!)以便找到差异。
那为什么不忽略分号呢?那是一个错误吗?我可以使用更好的正则表达式来使其工作吗?
我实际上在实际中使用了更复杂的正则表达式,但问题是一样的。
奇怪的是,当提交的文件包含一个额外的换行符时它会起作用:
foo;