.gitignore文件的相反是什么?

115

1
正如sehe所说,“忽略所有然后指定例外”方法可能是最简单的 - 请参见https://dev59.com/rHNA5IYBdhLWcg3wX8rk和https://dev59.com/JnM_5IYBdhLWcg3wvV5w。 - Mark Longair
2
并不是完全重复。解决方案可能是重复的,但是想法是仅跟踪列出的文件。例如,在Linux上用户主目录中的配置文件。 - xtian
2个回答

159

你可以使用!-行来将文件加入白名单:一个包含以下内容的.gitignore文件:

*
!included/

将排除所有内容,但保留'included/'目录。

请注意,如果您想要匹配某个模式的文件在子目录中不再被忽略,您需要防止包含这些文件的父级目录被忽略。这应该不会带来太大问题,因为git实际上并不跟踪目录,而只跟踪文件(通过存储库路径进行标识)。

示例:

*
!*/
!SOURCES

会忽略除了子目录中的SOURCES以外的所有内容。


3
当然,这一切都在man gitignore中有详细记录。 - Cascabel
链接失效。请使用http://linux.die.net/man/5/gitignore。 - jldupont
2
当路径为目录时,它对我不起作用...只适用于文件。 - semente
11
根据这里所示,您还需要添加!*/异常以允许父路径(也适用于@semente)。 - Tobias Kienzler
@TobiasKienzler 这是一个很好的补充。我已经将其添加到答案中以备后人参考。 - sehe
3
当然,您可能也想将.gitignore文件加入白名单:!*.gitignore - David Cook

15

你可以使用 .gitignore 来实现这个功能。

*
!file0.txt
!file1.txt

假如你对file0.txt和file1.txt感兴趣。


7
然而,这种方法不能用于嵌套路径,对于这种情况,您需要使用“!*/”技巧。详见此链接:https://dev59.com/bGox5IYBdhLWcg3wf0fl#9227991 - Tobias Kienzler

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