git - 过滤(git)差异输出以仅包含与模式匹配的行
问题描述
是否可以使用 diff/git(或其他常用实用程序)生成 仅包含与模式匹配的更改的差异?
例如,我有两个不同版本的文件:
一个/文件.txt
alpha
marker 100
omega
b/文件.txt
start
marker 200
end
我想生成仅包含对包含marker
字符串(或其他正则表达式模式)的行的更改的补丁:
diff --git a/file.txt b/file.txt
index eb27e64..fcc1676 100644
--- a/file.txt
+++ b/file.txt
@@ -1,3 +1,3 @@
alpha
-marker 100
+marker 200
omega
(应用这样的补丁后,只有 alpha->start、omega->end 更改仍处于待处理状态。)
现在我有一个带有 JGit 的自定义基于行的处理器,但是我对我的实现非常不满意,因为我必须手动解析/拆分/重组大块,并通过复制/破解 JGit 内部来生成差异)。
由于这似乎是一个常见的用例,我希望有一些工具可以提供这种开箱即用的工具,但到目前为止我还没有找到任何东西。
请注意,使用类似git diff -G'marker'
或任何类型的块过滤是不够的,因为块本身可以任意大(例如,这里只有一个块包含整个文件更改)。
解决方案
推荐阅读
- javascript - 如何关闭手风琴菜单的打开部分?
- python - Scrapy/Python 请求优先级和 CONCURRENT_REQUESTS
- c# - 谷歌浏览器向每个控制器/剃须刀页面发送 2 个请求
- r - 如何使用 Nix 包管理器添加本地 R 包
- java - Spring MVC 表单 - 支持对象有 150 多个字段,可以自动生成 HTML 表单吗?
- google-calendar-api - Google 日历 API 返回未经授权
- istio - Istio 网关未应用于 istio-ingressgateway
- python-3.x - 如何在差分进化优化中保存每次迭代的函数的参数值
- visual-studio-code - 在 vs 代码中,如何关闭自动右括号/引号
- php - WooCommerce 中的自定义帖子类型数据和订单项目数据