.gitignore 支持几层目录?

图片描述
这样写的话依然还是忽略的,但是如果我是写!/upload/2011就不被忽略了。

所以我有个疑问,gitignore就只是支二层目录的忽略规则吗?

阅读 11.2k
4 个回答

11后面不加'/'试试看:!/upload/2011/11

【参考链接】:忽略文件 / Ignoring Files

文件 .gitignore 的格式规范如下:

  • 所有空行或者以 # 开头的行都会被 Git 忽略。

  • 可以使用标准的 glob 模式匹配。

  • 匹配模式可以以(/)开头防止递归。

  • 匹配模式可以以(/)结尾指定目录。

  • 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。

所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。 星号(*)匹配零个或多个任意字符;[abc]
匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个
b,要么匹配一个c);问号(?)只匹配一个任意字符;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如
[0-9]表示匹配所有 0 到 9 的数字)。 使用两个星号(*) 表示匹配任意中间目录,比如a/**/z 可以匹配
a/z, a/b/za/b/c/z等。

任意层级

.gitignore 一般用我们使用 git add .这种命令中没有明确指定要加入的文件时忽略 .gitignore 中声明的文件,但以! 开头的规则不会被排除。

/uploads/*
!/uploads/2011/11/

这样的组合而成的,这样可以简化 .gitignore 的复杂度,如果没有 !/path语法的,你就不得不把除了 /2011/11/的文件和目录都写一遍。

例子:老师宣布这次成绩的全格人员


1号  合 格
2号  合 格
3号  合 格
4号  合 格
小明 不合格
6号  合 格
7号  合 格
8号  合 格
9号  合 格
。。。

当然也可以这样

全部合格 -------> /uploads,
除了小明 -------> !/uploads/2012/11,全部已经包括小明,但现在把他排除
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题