我对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
我还注意到,标准unix diff具有-I选项来“忽略其行匹配RE的更改”。但是我找不到使用unix diff工具替换git自己的diff的正确方法。
由于您说可以找到与您的模式匹配的更改,因此我建议如下:
> git diff> full.txt
git diff -G你的模式> match.txt
> diff full.txt match.txt与你喜欢的diff程序(例如vimdiff)
如果只有与模式匹配的更改,则full.txt和match.txt应该相同。否则,最后一个diff应突出显示任何不匹配的更改。