是否可以排除包含字符串的差异? (一种类似的并行方式是,排除仅包含带-w的空白的diff。)有时git diff返回一长串的变化列表,这些变化在给定的开发阶段没有意义。
例如,仅更改UUID或“权重”的补丁。有时这些变化并不重要,但仍然会产生很长的列表。
Git文档似乎提到几乎被字符串排除的功能(git grep,git log -L)。有没有我尚未找到的东西,或者我还没有正确使用它?
答案 0 :(得分:0)
不是我所知道的。
您可以按差异文件的状态(--diff-filter=\[(A|C|D|M|R|T|U|X|B)…\[*\]\]
)而不是按内容来排除差异文件。
您需要包装git diff并对其结果进行后期处理,以便按内容进行过滤。
答案 1 :(得分:0)
可以设置一个diff textconv过滤器来调整diff输出。如果编辑.git / info / attributes文件(如果文件不存在则创建它),则可以输入一行* .c diff = uuid,这将使所有C文件都使用“ uuid”差异过滤器。您也可以在.gitattributes或任何其他有效的gitattributes文件中编写此代码(有关详细信息,请参见手册页)。
完成此操作后,可以在.git / config文件或个人.gitconfig文件中指定差异过滤器。指定如何修改文件以呈现差异。例如,您可以编写如下内容:
[diff "uuid"]
textconv = "perl -pe 's/[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}/UUID-PLACEHOLDER/'"
这将使perl修改所有差异以将UUID转换为UUID-PLACEHOLDER
。您可以对文件执行任意转换,以根据需要修改它们以进行diff输出。您可以通过运行man gitattributes
来查看有关此内容的更多信息。