git diff 忽略行尾的分号

标签 git git-diff

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

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

相关文章:

git - DVCS repo 设计 - 使用分支或单独的 repo 将开发与稳定分开?

git - 查找在分支中专门更改的文件

git diff --仅名称,没有文件路径

git - 在单独的终端屏幕上显示 git diff 和 git log 输出

git - git diff的/a/b前缀是什么原因

Git:获取未提交更改的大小

git 同一系统内不同项目的多个用户名

git - (git) diff 输出相对路径?

git - 如何强制 git 在克隆请求时提示我输入用户名 + 密码

ruby - 如何在 rake 任务中执行 git commit/push