有没有一种简单的方法来显示与目录树中的任何文件都不匹配的 .gitignore 规则?

har*_*pig 7 git gitignore

我需要清理我的 .gitignore 文件。我运行一些命令,然后浏览 .gitignore 文件并删除不再需要的任何行。

该命令查找树中的所有文件,运行 git 的 check-ignore,仅 grep 出 .gitignore 文件中的匹配项,清理该行,然后对结果进行唯一排序。任何未出现在此输出中的规则都将被删除。

find . -type f -not -path .git -exec git check-ignore -v '{}' \; | grep '^.gitignore:' | sed 's/.*:\(.*\)\t.*$/\1/' | sort -u >> .gitignore
Run Code Online (Sandbox Code Playgroud)

此命令可能需要相当长的时间,尤其是在具有大量文件并安装在 NFS 上的存储库中。

是否有一种更简单的方法可以向我显示与树中任何文件都不匹配的规则?

Yur*_* G. 4

您可以使用git status --ignored=matching来获取与.gitignore.

git status -s --ignored=matching | grep "^\!\!" | awk '{print $2}' | xargs git check-ignore -v | grep '^.gitignore:' | sed 's/.*:\(.*\)\t.*$/\1/' | sort -u >> .gitignore
Run Code Online (Sandbox Code Playgroud)