如何清理 .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
是否有 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