一位同事创建了一个提交,其中他的编辑器在每行后面都添加了分号(以及其他更改)。
我知道我可以使用-w
开关来忽略空白错误。是否会有某种git
魔术使git完全忽略;
,或者甚至仅在EOL时才更好?
就像是:
git diff --ignore=; -w
最佳答案
也许您可以使用--word-diff-regex
选项解决该问题。这就是我所做的:我创建了一个简单的文件,并提交了以下内容。
first line
second line
third line
然后我像这样修改它:
first line;
second; line;
third changed line;
如果我已正确理解,则只需显示以下差异:
秒->秒;
第三行->第三条更改的行
您可以部分执行此操作:
git diff --word-diff-regex='[^ \\n;]+' HEAD..HEAD~1
这是输出:
first line
second line
third[-changed-] line
我之所以这么说是因为,即使我找到了一个正则表达式也可以检测到第一个更改(
'[^ \\n]+(?!\\n|$)'
),git似乎还是不接受它,出于某种原因,我不知道(我仍在研究它)。无论如何,其背后的逻辑是此选项“替代”了git如何考虑单词。我知道这不是正确的正则表达式,因为它没有涵盖多种情况,请根据需要进行更改(例如,如果您认为
test1;test2
是一个单词)。关于git diff在行尾忽略分号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56315074/