如何设置 .gitignore 忽略所有 .jars 文件但不包括特定文件夹中的 .jars 文件?

7

我有这样的一个项目结构:

/proj/a/file.jar
/proj/a/1/file.jar
/proj/b/file.jar
/proj/b/1/file.jar
/proj/b/2/1/file.jar
/proj/c/file.jar
/proj/c/1/file.jar
/proj/c/2/1/file.jar

我想忽略除了c文件夹及其所有子文件夹中的jar文件以外的所有jar文件。我应该如何在.gitignore文件中设置?

*.jar
!c/*.jar

无法工作。这个也一样:
*.jar
!c/*/*.jar

还有这个:

*.jar
!/proj/c/*/*.jar

还有这个:

*.jar
!/proj/c/**/*.jar

我有所遗漏吗?


1
应该可以正常工作:https://gist.github.com/92a07fbe1f00ae9b5169 - ThiefMaster
ThiefMaster,谢谢,它起作用了。但在实际项目中,嵌套级别因文件而异。我应该将所有可能的级别写入gitignore,比如“/proj/c//.jar”,“/proj/c///.jar”,“/proj/c////.jar”等等吗?像“/proj/c/**/.jar”这样的东西不起作用。 :( 我已经编辑了我的问题以使其更清晰。 - L'sync
是的,如果不支持 **,则需要分别编写每个嵌套级别。或者您可以在子目录中创建单独的 .gitignore 文件,其中只包含 !*.jar - ThiefMaster
ThiefMaster,看起来 ** 绝对不起作用(无论是Win7还是Linux系统)。因此,我在我的c文件夹中创建了额外的.gitignore,并添加了“!*.jar”。它有效,所以我可以接受你的答案,但它应该是一个答案。 :) - L'sync
1个回答

7

Git 不支持 ** 类型的通配符,因此您可以使用全路径(例如 /whatever/*/*/*.jar 等)以反映正确的目录级别,或者您可以在希望取消忽略 JAR 文件的文件夹中放置包含 !*.jar.gitignore 文件。


简单来说,在你想要取消忽略 JAR 文件的文件夹中,只需在 .gitignore 文件中添加 !*.jar 即可。这比污染顶级 .gitignore 文件要好。 - RobbiewOnline
1
在.gitignore文件中,在*.jar条目之后添加行 !/path/to/my.jar,这对我很有效。如果在.gitignore文件中,!/path/to/my.jar 出现在 *.jar 行之前,则无效。.gitignore文件中的顺序很重要。我今天吃了亏。 - RuntimeException

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