列出所有具有git属性集的文件

Sta*_*low 7 git gitattributes

git check-attr允许我检查是否.gitattributes为特定文件集设置了属性.例如:

# git check-attr myAttr -- org/example/file1 org/example/file2
org/example/file1: myAttr: set
org/example/file2: myAttr: unspecified
Run Code Online (Sandbox Code Playgroud)

是否有一种简单的方法可以列出所有已myAttr设置的文件,包括所有通配符匹配?

Tho*_*ner 6

其他帖子对我来说效果不佳,但我到了那里:

git ls-files | git check-attr -a --stdin
Run Code Online (Sandbox Code Playgroud)

“检查 git 中的每个文件并打印所有过滤器”一行。


Jua*_*uan 5

您可以使用 ,将存储库中所有文件的列表设置为参数git ls-files,如下所示:

git check-attr myAttr `git ls-files`
Run Code Online (Sandbox Code Playgroud)

如果您的存储库有太多文件,您可能会出现以下错误:

-bash: /usr/bin/git: 参数列表太长

您可以使用xargs克服这个问题:

git ls-files | xargs git check-attr myAttr
Run Code Online (Sandbox Code Playgroud)

最后,如果您有太多文件,您可能需要过滤掉未指定参数的文件,以使输出更具可读性:

git ls-files | xargs git check-attr myAttr | grep -v 'unspecified$'
Run Code Online (Sandbox Code Playgroud)

使用 grep,您可以对此输出应用更多过滤器,以便仅匹配您想要的文件。

  • 对于较小的存储库,该解决方案运行良好且足够快。但我认为对于较大的项目,应该增强“git check-attr”以列出具有属性集的所有文件。 (4认同)