仅显示基于正则表达式的差异/补丁的相关块
git log -G<regex> -p是一个很棒的工具,可以在代码库的历史记录中搜索与指定模式匹配的更改。但是,将相关的块放置在差异较大/不相关的块的海洋中的diff / patch输出中可能会让人不知所措。 当然可以在的输出中搜索git log原始的字符串/正则表达式,但这并不能减少视觉噪音和许多无关更改的干扰。 继续阅读git log,我看到有--pickaxe-all,它与我想要的完全相反:它扩大了输出(扩展到整个变更集),而我想将其限制(到特定的块)。 本质上,我正在寻找一种“智能”地将差异/补丁解析为单个块的方法,然后针对每个块执行搜索(仅针对更改的行),丢弃不匹配的块,然后将其输出那做。 我所描述的工具是否存在?有没有更好的方法来获得匹配的/受影响的大块头? 我已经完成了一些初步的研究... 如果可以grep比较/修补程序输出并使上下文选项值动态(例如,通过正则表达式而不是行数),则可能就足够了。但是grep并不是完全按照这种方式构建的(我也不一定要求该功能)。 我找到了patchutils套件,最初听起来好像它可以满足我的需求。但是在阅读其man页面之后,这些工具似乎无法处理基于正则表达式的匹配块。(不过,他们可以接受帅哥列表...) 我终于遇到了splitpatch.rb,它似乎可以很好地处理补丁的解析,但是需要对其进行显着扩展,以通过stdin,匹配所需的块,然后输出块来处理读取补丁。