我有一个.gitignore文件,其中包含以下两行:
(1) [Bb]in/
(2) !X/Y/[Bb]in
我的理解是,第一行是一个全面的声明,说明不应包含来自Bin / bin文件夹的文件。第二行的目的是实现一个例外,即将所有文件包含在X / Y的Bin / bin文件夹中。
由于某种原因,仍然不包括X / Y / [Bb] in的含量。我必须主要使用Visual Studio 2013 for git tfs,但我也尝试使用git bash强制包含:
git add .
是否有来自第(2)行的内容?
答案 0 :(得分:1)
第一行排除了目录 - 无论它在哪里,因此完全忽略了该目录中的任何内容,因此您甚至无法重新包含它。这就是你的模式不起作用的原因。
为了使其工作,您必须先排除文件和文件夹,然后才能重新包含它们。 为了使它更简单,只需假设一个级别(删除y级别)(为了清晰起见,我也跳过了大写/小写)
**/bin/**
x/**
!x/bin
此模式将完全按照您的说明进行操作 第一行排除任何bin文件夹下的所有内容。前缀**使它适用于任何文件夹级别,没有它 - 它只适用于根级别bin文件夹。后缀**使其适用于其下的文件和文件夹。 第二行明确排除'x'文件夹及其内容。是的,这很奇怪,但是这是有用的。 然后第三行重新包含二进制文件夹。
我假设你有一些你希望包含在'x'下的源代码,然后你明确地重新包含它,所以最好把它放在一个单独的文件夹下。
查看这些帖子中的一些相同问题
Using .gitignore to ignore everything but specific directories
What's the difference between Git ignoring directory and directory/*?
.gitignore exclude folder but include specific subfolder