Git:列出应该被忽略但没有被忽略的文件

4

注意

这不是关于像 git rm -r --cached . && git add . 这样的修复方法。我实际上只想要列出文件。

为什么

有时候当我编辑我的 .gitignore 文件并忘记使用上述命令时,我会得到一些本应该被忽略但仍然存在于代码库中的文件。

目标

我想要编写一个 shell 脚本,能够列出所有在我的文件系统上“应该”被忽略但仍然存在的文件。

结果

最终,我想要将它实现到一个持续集成服务器上,该服务器将检查 .gitignore 中的规则是否匹配存储库中的文件。

有没有办法手动解析 .gitignore 文件呢?


如果可以接受(或至少作为灵感的使用),那么这个问题可能会有所帮助。 - Etan Reisner
2个回答

12
git ls-files --cached --ignored --exclude-standard

完全忘记了ls-files。这是回答这个问题的最佳所有“git”解决方案。 - wspurgin
我使用 git config --global alias.ls ls-files --exclude-standard :-) - jthill
很好,我一定会为此添加一个别名。谢谢分享 :) - wspurgin
对于这个问题,我的输出为空。我知道我有很多本地文件被忽略了,没有在代码库中。但是命令返回没有结果。 - lockdoc
1
“--cached”选项表示仅列出已索引、已缓存、已暂存、已添加或已跟踪的路径。如果没有结果返回,则没有被忽略模式匹配的跟踪路径。 - jthill
希望能有一行代码,然后删除这些文件。 - escapecharacter

-1

你应该查看 git check-ignore --help。你可以使用它来检查路径是否应该被包含或排除。据我所知,为了达到你想要的效果,你应该使用 --no-index 选项。

这至少是处理过程中的 git 部分。

处理过程中的 shell 部分会涉及更多内容。你有很多选择。你可以使用 find 列出所有文件并将它们管道传递给 git check-ignore,并根据输出创建一个应该被排除的文件列表。

这是我的建议。

这里有一个类似的 SO 问题 Git command to show which specific files are ignored by .gitignore


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接