如何清理 .gitignore 文件?

How do I clean up the .gitignore file?

是否有 git 命令可用于删除 .gitignore 中未使用的行?

换句话说,我想删除不会对项目产生影响的模式。

您只需打开文件并删除不使用的行并保存即可。

Git 中没有内置任何内容来执行此操作,因此您必须编写自己的代码,可能使用 git check-ignore。这样的程序会非常复杂,因为一些忽略条目可能未被使用 因为 其他现有的忽略条目。举一个有点傻的例子,如果一个条目说 *.a,一个说 *.b,第三个说 *.[ab],删除前两个中的一个或两个是 "safe"(使得被忽略的内容没有变化)只要第三个仍然存在,但是删除第三个需要保留前两个的 both 。这意味着要找到真正最小的忽略条目集需要尝试所有组合。

总的来说,这不是一个好主意。例如,假设项目 .gitignore 包含以下两行(以及其他):

*.dylib
*.dll

并且您正在处理 Linux——但是构建共享的动态加载库的项目不限于 Linux。

这些行是为那些在 Mac 上工作的人(第一行)和 Windows(第二行)提供和使用的。你永远不会自己使用它们。您的系统既不构建 DLL 也不构建 Dylib 文件;它改为构建共享库 (*.so) 文件;你构建的任何测试是否使用它们的自动代码都会说:不,这些没有被使用。因此,您可能会删除它们……并给 other 开发人员带来麻烦。如果 他们 运行 你的程序,它会删除 正在使用的 *.so 行。

(这种情况也发生在 IDE 上,它可能会创建 Git 可以看到的具有 "hidden" 名称的文件或目录。如果您使用不同的 IDE来自 Bob,而 Carol 使用了第三个,你可能三个都需要不同的条目。可以使用你自己的全局 "excludes" 文件来解决这个问题,如果你的编辑器制作备份文件,这通常是正确的答案:如果 Bob 的编辑器makes *~ while Carol's makes #*, Bob can put *~ in his personal global exclude, Carol can put #* in hers. 同时,如果你使用 vim ,你会把 .swp*.swp 放在你的里面。但这有时也往往取决于项目。)

如果您愿意使用 IDE,您可以尝试 .ignore plugin for IntelliJ IDEA​​。根据我的经验,它应该能满足您的需求。

来自其功能列表:

  • Entries inspection (duplicated, covered, unused, relative, incorrect syntax, relative entries) with fix actions