Git包含任意嵌套的子文件夹,当其父项已被排除在.gitignore中时

时间:2013-12-30 12:31:32

标签: git github bitbucket gitignore

我要排除文件夹a及其子文件夹,但想要包含一个特定的子文件夹b,其中b可以是a下面某个子文件夹,并且没有指定b的确切路径。

我的.gitignore包含以下行:

一个/ **

!一个/ ** / B

然而这不起作用。尝试了上面的许多其他排列,包括堆栈溢出的其他帖子,但似乎没有任何工作。感谢对此的任何想法。

注意:此问题被错误地标记为之前被问及正在重新发布。 stackoverflow上的上一个问题涉及可以显式声明子目录路径的情况。在这个问题中,我正在解决的情况是b可以是“a”下面的任何子文件夹,而不是预定的路径。

此外,早期的解决方案要求您“取消”要取消“unignore”的任何内容的每个父目录。但是在这种情况下,我正在尝试创建一个允许该子目录的通用规则,而不必担心它在目录树中的位置。因此,早期的解决方案在这种情况下不起作用/适用。

2 个答案:

答案 0 :(得分:1)

如果你告诉git忽略一个目录,它将完全忽略该目录中的所有内容。这意味着git无法与你的排除相匹配,因为git根本就没有看到它。

以有意义的方式使用排除的唯一方法是单个目录,您可以忽略除此之外的所有文件夹:

/some/path/*
!/some/path/foo

这将忽略foo下直接/some/path以外的所有条目。

但是,大多数情况下,明确忽略事物比使用排除更清楚。

答案 1 :(得分:1)

尝试手动添加文件(通常优先于.gitignore样式的规则):

git add /path/to/module

您甚至可能希望添加-N 意图标志,建议您添加它们,但不是立即添加。我经常对尚不准备上演的新文件执行此操作。


这是copy of an answer张贴给这个问题的重复。我将其重新发布在此处以提高可见性-我发现不用一堆gitignore规则会更容易。

相关问题