Regex Git diff:忽略以单词开头的行
据我所知,我们可以告诉Regex Git diff:忽略以单词开头的行,regex,git,git-diff,Regex,Git,Git Diff,据我所知,我们可以告诉git diff忽略以*开头的行,方法是: git diff -G '^[[:space:]]*[^[:space:]*]' 我如何告诉git忽略以单词开头的行或更多行(例如:*在处生成),而不仅仅是字符 应忽略此文件,因为它只包含细微的更改: - * Generated at 2018-11-21 + * Generated at 2018-11-23 - * Generated at 2018-11-21 + * Generated at 2018-11-23 +
git diff
忽略以*
开头的行,方法是:
git diff -G '^[[:space:]]*[^[:space:]*]'
我如何告诉git忽略以单词开头的行或更多行(例如:*在
处生成),而不仅仅是字符
应忽略此文件,因为它只包含细微的更改:
- * Generated at 2018-11-21
+ * Generated at 2018-11-23
- * Generated at 2018-11-21
+ * Generated at 2018-11-23
+ * This line is important! Although it starts with a *
不应忽略此文件,它不仅包含琐碎的更改:
- * Generated at 2018-11-21
+ * Generated at 2018-11-23
- * Generated at 2018-11-21
+ * Generated at 2018-11-23
+ * This line is important! Although it starts with a *
考虑到您正在忽略与正则表达式不匹配的更改,您只需将所需的单词放入前瞻捕获组中的表达式中,如下所示:
git diff -G '^(?=.*Generated at)[[:space:]]*[^[:space:]*]'
git diff -G '^\s*([^\s*]|\*\s*[^\sG]|\*\sG[^e]|\*\sGe[^n]|\*\sGen[^e]|\*\sGene[^r]|\*\sGener[^a]|\*\sGenera[^t]|\*\sGenerat[^e]|\*\sGenerate[^d]).*'
请注意,如果要继续添加要忽略的单词,只需继续添加这些组(不要忘记*
):
但是,如果字符串整体上包含在任何地方生成的“Generated at”,则应忽略该字符串。如果您想确切地定义它应该如何开始,那么将
替换为[^[:word:]
git diff -G '^(?=[^[:word:]]*Generated at)[[:space:]]*[^[:space:]*]'
你可以看一看它的行为
第1版:*
第2版:[^[:word:]*
Git使用的正则表达式似乎不支持。这就是为什么它不起作用的原因。一个不那么优雅的解决方案可能是这样的:
git diff -G '^(?=.*Generated at)[[:space:]]*[^[:space:]*]'
git diff -G '^\s*([^\s*]|\*\s*[^\sG]|\*\sG[^e]|\*\sGe[^n]|\*\sGen[^e]|\*\sGene[^r]|\*\sGener[^a]|\*\sGenera[^t]|\*\sGenerat[^e]|\*\sGenerate[^d]).*'
这将过滤掉所有以“*生成的
”开头的更改
测试:TL;DR:gitdiff-G不能仅排除与正则表达式匹配的更改 看看
在这里,torek解释了
git log
和git diff
是如何工作的,以及参数-G
是如何工作的。对于您的回答,我可能要多谢您了。然而,git版本2.7.4似乎不支持这个正则表达式,我得到了致命的:无效的正则表达式:无效的前置正则表达式
。