gpt4 book ai didi

regex - 忽略与 git diff 中的字符串匹配的更改

转载 作者:IT王子 更新时间:2023-10-29 01:06:29 24 4
gpt4 key购买 nike

我对大量在 git 中进行版本控制的文件进行了一次简单的更改,我希望能够检查没有其他更改进入这个大型提交。

所有的变化都是形式

-                       "main()",
+ OOMPH_CURRENT_FUNCTION,

其中“main()”可以是任何函数的名称。我想生成所有不是这种形式的更改的差异。

git diff 的 -G 和 -S 选项非常接近——它们找到与字符串或正则表达式匹配的更改。

有什么好的方法吗?

到目前为止的尝试

另一个question描述了如何否定正则表达式,使用这种方法我认为命令应该是

git diff -G '^((?!OOMPH_CURRENT_FUNCTION).)*$'

但这只是返回错误信息

fatal: invalid log-grep regex: Invalid preceding regular expression

所以我猜 git 不支持这个正则表达式功能。

我还注意到标准的 unix diff 有一个 -I 选项来“忽略所有行都匹配 RE 的更改”。但是我找不到用unix diff工具替换git自带diff的正确方法。

最佳答案

尝试以下操作:

$ git diff > full_diff.txt
$ git diff -G "your pattern" > matching_diff.txt

然后您可以像这样比较两者:

$ diff matching_diff.txt full_diff.txt

如果所有更改都匹配模式,full_diff.txtmatching_diff.txt 将相同,最后的 diff 命令将不会返回任何东西。

如果有与模式不匹配的更改,最后的 diff 将突出显示这些更改。


您可以结合上述所有步骤,避免像这样创建两个额外的文件:

diff <(git diff -G "your pattern") <(git diff)  # works with other diff tools too

关于regex - 忽略与 git diff 中的字符串匹配的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15878622/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com