相关疑难解决方法(0)

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

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

这些变化都是形式

-                       "main()",
+                       OOMPH_CURRENT_FUNCTION,
Run Code Online (Sandbox Code Playgroud)

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

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

有没有办法做到这一点?

到目前为止的尝试

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

git diff -G '^((?!OOMPH_CURRENT_FUNCTION).)*$'
Run Code Online (Sandbox Code Playgroud)

但这只是返回错误消息

fatal: invalid log-grep regex: Invalid preceding regular expression
Run Code Online (Sandbox Code Playgroud)

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

我还注意到标准的unix diff有-I选项"忽略其行符合RE的变化".但我找不到用unix diff工具替换git自己的diff的正确方法.

regex git diff

28
推荐指数
3
解决办法
6792
查看次数

Git diff:仅显示与模式不匹配的更改

是否可以假设git diff以某种模式开头的行保持不变?

例如,请考虑以下情况:

git diff -U0
Run Code Online (Sandbox Code Playgroud)

输出:

diff --git a/file_a.txt b/file_a.txt
index 26ed843..4071ff8 100644
--- a/file_a.txt
+++ b/file_a.txt
@@ -24 +24 @@
- * unimportant foo
+ * unimportant bar
diff --git a/file_b.txt b/file_b.txt
index c6d051e..4b3cf22 100644
--- a/file_b.txt
+++ b/file_b.txt
@@ -24 +24 @@
- * unimportant foo
+ * unimportant bar
@@ -48,0 +49 @@
+   this is important
@@ -56,0 +58 @@
+   this is also important
Run Code Online (Sandbox Code Playgroud)

以星号(正则表达式模式"^[[:space:]]*\*.*")开头的行并不重要,我想仅从 的输出中过滤包含此类行中的更改的文件git diff。在上面的示例中,输出应file_b.txt …

regex git git-diff

6
推荐指数
1
解决办法
1284
查看次数

标签 统计

git ×2

regex ×2

diff ×1

git-diff ×1