如何清理 .gitignore 文件?

3

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

换句话说,我想要删除对项目没有影响的模式。


1
你是指自动化吗?否则的话:它只是一个文本文件,编辑它即可。 - jonrsharpe
这非常依赖于你所从事的项目类型。盲目地向.gitignore文件中添加/删除模式应该避免,所有对.gitignore的必要修改都必须是手动完成的过程。 - aliasav
如果你在请求别人寻找或编写该命令,那么这已经超出了SO的范围。你尝试过什么?发生了什么? - jonrsharpe
盲目地使用.gitignore文件是gitignore最常见的用法。可以从另一个项目中复制它,或者浏览GitHub以获取适合某种类型项目的gitignore文件。 - Anders Lindén
问题已更新。 - Anders Lindén
看看 SO 文档中有关 git update-index 的内容,并根据自己的需要进行调整。 - pylang
3个回答

3
Git本身没有这个功能,因此您需要编写自己的代码,可能会使用git check-ignore。这样的程序会非常复杂,因为一些忽略条目可能未被使用 因为 存在其他现有的忽略条目。举个有点儿傻的例子,如果一个条目说*.a,另一个说*.b,第三个说*.[ab],删除前两个中的任何一个或两个都是“安全的”(不会更改被忽略的内容),只要第三个保留下来,但是删除第三个需要保持前两个的同时存在。这意味着找到一个真正最小的忽略条目集合需要尝试所有组合。
无论如何,这通常不是一个好主意。例如,假设项目.gitignore包含以下两行(以及其他行):
*.dylib
*.dll

您正在使用 Linux 工作,但是该项目构建的共享动态加载库并不限于 Linux。

这些行用于 Mac(第一行)和 Windows(第二行)上工作的人员。您自己永远不会使用它们。您的系统既不构建 DLL 文件也不构建 Dylib 文件;相反,它构建共享库(*.so)文件;并且任何自动代码构建都会测试您是否使用它们,答案将是:不使用。因此,您可以删除它们... 但会给其他开发人员带来麻烦。如果他们运行您的程序,则会删除您正在使用的 *.so 行。

(IDE也会出现这种情况,可能会创建带有“隐藏”名称的文件或目录,Git可以看到。如果您使用与Bob不同的IDE,并且Carol使用第三个,您三个人可能都需要不同的条目。可以使用自己的全局“排除”文件解决此问题,如果您的编辑器创建备份文件,那通常是正确的答案:如果Bob的编辑器创建*~而Carol的创建#*,Bob可以将*~放入他个人的全局排除中,Carol可以将#*放入她的排除中。同时,如果您使用vim,则应将.swp*.swp放在您的排除中。但这有时也取决于项目。)

2
如果您愿意使用集成开发环境(IDE),可以尝试在IntelliJ IDEA中使用.ignore插件。根据我的经验,它应该能够满足您的需求。
从其功能列表中可以看到:
  • 条目检查(重复、覆盖、未使用、相对、语法不正确、相对条目)并提供修复操作

0

你只需要打开文件,删除你不需要的行并保存。


1
我整个问题都是关于如何检测哪些行的。 - Anders Lindén
请注意,@AndersLindén,你实际上从未写过那个东西 - jonrsharpe

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