.gitignore 否定不起作用

Eri*_*a E 6 git msysgit gitignore

我正在使用 msysgit 1.9.4。

我的 .gitignore 文件位于 repo 的根目录,如下所示:

build/
a/b/
!a/c/d/e/**/build/
Run Code Online (Sandbox Code Playgroud)

我的意图是,所有 build/ 目录都将被忽略,除非它们是 a/c/d/e/ 的子目录(任何深度)。但是 a/c/d/e/f/build/ 仍然被 Git 忽略。

我在这里缺少什么?

Von*_*onC 6

的一般规则gitignore很简单:

如果排除某个文件的父目录,则无法重新包含该文件。

要从被忽略的文件夹的子文件夹中排除文件(或所有文件)build,您需要先排除该文件夹然后排除文件:

我已经测试过:

**/build/
a/b/
!a/c/d/e/**/build/     <== whitelist folder first
!a/c/d/e/**/build/**   <== then the files
Run Code Online (Sandbox Code Playgroud)

  • 我同意这“简单”是指学习后很容易理解。但它并不是真正“简单”,因为它在你学习之前很直观或容易猜测。(要明确的是:我抱怨的是 git 的设计,而不是你的答案!:) (2认同)