git diff 忽略行尾的分号

Chr*_*aes 5 git git-diff

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

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

就像是:

git diff --ignore=; -w
Run Code Online (Sandbox Code Playgroud)

Mar*_*ara 5

也许你可以用这个--word-diff-regex选项来解决这个问题。这就是我所做的:我创建了一个简单的文件并使用以下内容提交它。

first line
second line
third line
Run Code Online (Sandbox Code Playgroud)

然后我这样修改:

first line;
second; line;
third changed line;
Run Code Online (Sandbox Code Playgroud)

如果我理解正确,您只需要显示以下差异:第二个 -> 第二个;第三行 -> 第三行更改

您可以部分执行此操作:

git diff  --word-diff-regex='[^ \\n;]+' HEAD..HEAD~1
Run Code Online (Sandbox Code Playgroud)

这是输出:

first line
second line
third[-changed-] line
Run Code Online (Sandbox Code Playgroud)

我说部分是因为即使我找到了一个正则表达式来检测第一个更改('[^ \\n]+(?!\\n|$)'),git 似乎不接受它,出于某种我不知道的原因(我仍在研究它)。

不管怎样,其背后的逻辑是这个选项“覆盖”了 git 考虑单词的方式。我知道这不是正确的正则表达式,因为它没有涵盖几种情况,请根据您的需要更改它(例如,如果您考虑test1;test2一个单词)。


LeG*_*GEC 2

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

使用您同事的版本创建一个文件,在其中删除 EOL 处的分号,并将其与您想要的文件进行比较:

git show modifiedcommit:the/file | sed -e 's/;$//' > /tmp/theFile
git diff originalcommit:the/file /tmp/theFile 
Run Code Online (Sandbox Code Playgroud)