我用的是msysgit 1.9.4。我的.gitignore文件,在repo的根目录下,看起来像这样:
build/ a/b/ !a/c/d/e/**/build/
字符串我的意图是,所有的build/目录都被忽略,除非它们是a/c/d/e/的子目录(任何深度)。但是a/c/d/e/f/build/仍然被Git忽略。我错过了什么?
yptwkmov1#
gitignore的一般规则很简单:
gitignore
It is not possible to re-include a file if a parent directory of that file is excluded.
要从被忽略的文件夹build的子文件夹中排除文件(或所有文件),您需要先排除文件夹,再排除 * 文件:我测试过:
build
**/build/ a/b/ !a/c/d/e/**/build/ <== whitelist folder first !a/c/d/e/**/build/** <== then the files
字符串
pkwftd7m2#
例如:您忽略了/node_modules/文件夹。但您想添加一个需要修补的文件。这是要列入白名单的文件:/node_modules/x/y/z/file.js将以下内容添加到.gitignore文件的末尾:
/node_modules/
/node_modules/x/y/z/file.js
/** !/node_modules !/node_modules/x !/node_modules/x/y !/node_modules/x/y/z !/node_modules/x/y/z/file.js
字符串第一行(/**)很重要-不知道它是如何工作的:-)
2条答案
按热度按时间yptwkmov1#
gitignore
的一般规则很简单:It is not possible to re-include a file if a parent directory of that file is excluded.
要从被忽略的文件夹
build
的子文件夹中排除文件(或所有文件),您需要先排除文件夹,再排除 * 文件:我测试过:
字符串
pkwftd7m2#
例如:您忽略了
/node_modules/
文件夹。但您想添加一个需要修补的文件。这是要列入白名单的文件:/node_modules/x/y/z/file.js
将以下内容添加到.gitignore文件的末尾:
字符串
第一行(/**)很重要-不知道它是如何工作的:-)