git diff忽略行尾的分号

时间:2019-05-26 15:51:39

标签: git git-diff

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

我知道我可以使用-w开关来忽略空白错误。是否会有某种git的魔法可以使git完全忽略;,或者甚至只有在EOL时才更好?

类似的东西:

git diff --ignore=; -w

2 个答案:

答案 0 :(得分:3)

也许您可以使用--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是一个单词)。

答案 1 :(得分:2)

我能想到的最简单的方法是:

使用同事的版本创建文件,在EOL上删除分号,然后将其与所需文件进行比较:

git show modifiedcommit:the/file | sed -e 's/;$//' > /tmp/theFile
git diff originalcommit:the/file /tmp/theFile