一位同事创建了一个提交,其中他的编辑器在每行后面都添加了分号(以及其他更改)。

我知道我可以使用-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/

10-15 01:52
查看更多