首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >忽略git diff中与字符串匹配的更改

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

Stack Overflow用户
提问于 2013-04-08 20:06:21
回答 2查看 12.1K关注 0票数 39

我对大量在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的正确方法。

EN

回答 2

Stack Overflow用户

发布于 2018-07-08 21:35:13

使用git difftool运行真正的diff

示例:https://github.com/cben/kubernetes-discovery-samples/commit/b1e946434e73d8d1650c887f7d49b46dcbd835a6

我已经按我想要的方式创建了一个运行diff的脚本(在这里,我将curl --verbose输出保存在存储库中,导致每次我重新运行curl时都会有一些无聊的更改):

#!/bin/bash
diff --recursive --unified=1 --color \
     --ignore-matching-lines=serverAddress \
     --ignore-matching-lines='^\*  subject:' \
     --ignore-matching-lines='^\*  start date:' \
     --ignore-matching-lines='^\*  expire date:' \
     --ignore-matching-lines='^\*  issuer:' \
     --ignore-matching-lines='^< Date:' \
     --ignore-matching-lines='^< Content-Length:' \
     --ignore-matching-lines='--:--:--' \
     --ignore-matching-lines='{ \[[0-9]* bytes data\]' \
     "$@"

现在我可以运行git difftool --dir-diff --extcmd=path/to/above/script.sh,只看到有趣的变化。

关于GNU diff -I也就是--ignore-matching-lines,有一个重要的警告:这仅仅是防止这样的代码行“有趣”,但当这些更改出现在与其他未被忽略的更改相同的块中时,它仍然会显示它们。我在上面使用了--unified=1,通过将块变小来减少这种影响(每个更改上下只有一行上下文行)。

票数 12
EN

Stack Overflow用户

发布于 2019-06-29 10:46:12

我想我有一个不同的解决方案,使用管道和grep。我有两个文件需要检查差异,这两个文件不包括@@g:,所以我这样做了(从hereherehere借用

$ git diff -U0 --color-words --no-index file1.tex file2.tex | grep -v -e "@@" -e "g:"

这似乎起到了作用。色彩依然存在。

所以我假设你可以使用一个更简单的git diff命令/输出来做同样的事情。我喜欢它的原因是它不需要创建新的文件或重定向(除了管道)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15878622

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档