参考链接:

https://ruby-china.org/topics/23561

http://stackoverflow.com/questions/5533050/gitignore-exclude-folder-but-include-specific-subfolder#

一.后置线

static/ 和 static 是不一样的,前者只匹配目录 static,而后者则可以匹配同名的目录、文件名、符号链接等等……;如果 static/ 是你声名的规则,那么其下所有的子目录及文件都匹配,除非你之后用 ! 排除;

二.前置线

.gitignore 是默认以相对路径为基准的,子目录下的 .gitignore 优先应用自己的规则然后再递归向上一直找到 git 的根(也就是 .git 存在的那个目录)。因此在路径模式前追加 / 是不推荐的,因为:

  1. 多数情况下我们只使用一个 .gitignore,即工作树根路径下的 .gitignore。此时相对于它自身,/ 就代表着当前工作路径,没有必要加它;

  2. 如果我们添加了子目录下的 .gitignore,那我们的本意也是要去匹配其下的路径,若是加了前置的 / 反而让人摸不着头脑;

不过有一种情况下 / 是需要的,比如说你项目下有很多 index.html 文件,你只想忽略工作树根路径下的那一个,其他则不管;这样的话直接写 index.html 是不行的,因为 git 会把它当作一个 glob pattern 去匹配所有同名文件(哪怕不同级)。此时就需要追加一个前置斜线:/index.html,意思是:我只要屏蔽相对于 / 下的 index.html

三.exclude

dist/*
!dist/style/
dist/style/*
!dist/**/*.htm

想要忽略dist目录下所有非htm文件和dist style子目录下所有的非htm文件

注意:dist/* 中/*很重要,如果没有将直接忽略dist/ 下所有东西,加了exclude也没有用。

 

posted on 2016-08-22 10:20  翻页工  阅读(224)  评论(0编辑  收藏  举报