git log -G<regex> -p
是一个很好的工具,可以在代码库的历史记录中搜索与指定模式匹配的更改。然而,在几乎不相关的大块海洋中找到差异/补丁输出中的相关大块可能会让人不知所措。
当然可以搜索git log
原始字符串/正则表达式的输出,但这对减少许多不相关更改的视觉噪音和干扰几乎没有作用。
继续阅读git log
,我看到了--pickaxe-all
,这与我想要的完全相反:它扩大了输出(到整个变更集),而我想限制它(到特定的大块)。
本质上,我正在寻找一种方法来“智能地”将差异/补丁解析为单个大块,然后对每个大块执行搜索(仅针对更改的行),丢弃不匹配的大块,并输出那些大块那做。
是否存在我描述的工具?有没有更好的方法来获得匹配/受影响的帅哥?
我做过的一些初步研究......
如果可以grep
使用 diff/patch 输出并使上下文选项值动态化(例如,通过正则表达式而不是行数),那可能就足够了。但grep
并非完全按照这种方式构建(我也不一定要求该功能)。
我找到了patchutils套件,最初听起来它可能适合我的需求。但是在阅读其man
页面后,这些工具似乎无法处理基于正则表达式的匹配块。(不过,他们可以接受帅哥的名单……)
我终于遇到了splitpatch.rb,它似乎可以很好地处理补丁的解析,但它需要显着增强以通过 处理读取补丁stdin
,匹配所需的大块,然后输出大块。
小智 9
这里/sf/answers/2480430011/描述了一种方法来做你正在寻找的东西。有效地:
git diff -U1 | grepdiff 'console' --output-matching=hunk
它仅显示与给定字符串“控制台”匹配的大块头。
归档时间: |
|
查看次数: |
3807 次 |
最近记录: |