文件 .gitignore 配置

规则优先级

命令行 > 当前目录 > 父级目录 > ... > $GIT_DIR/info/exclude > core.excludesfile

匹配规则

空格  不匹配
#     文件注释
/     开始位置,只匹配文件夹以及该文件夹路径下的内容,不匹配该文件
/     结束位置,匹配项目跟目录
**    多级目录
?     单个字符
[]    单个字符列表
!     否定,再次包含

忽略示例

/bin            忽略根目录下的bin文件
/*.c            忽略cat.c,不忽略 build/cat.c
bin/            忽略当前路径下的bin文件夹及其子内容,不忽略bin文件
**/foo          忽略/foo, a/foo, a/b/foo等
a/**/b          忽略a/b, a/x/b, a/x/y/b等
*.log           忽略所有 .log 文件
config.php      忽略当前路径的 config.php 文件
debug/*.obj     忽略 debug/io.obj,不忽略 debug/common/io.obj 和 tools/debug/io.obj
!/bin/run.sh    不忽略 bin 目录下的 run.sh 文件

.gitignore 规则不生效

.gitignore只能忽略没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的,此时先把本地缓存删除(改变成未track状态)再提交。

git rm -r --cached .
git add .
git commit -m 'update .gitignore'