Git .gitignore
2021/4/17大约 2 分钟
Git .gitignore
Git 忽略规则
Git 忽略规则优先级
- 从命令行中读取可用的忽略规则
- 当前目录定义的规则
- 父级目录定义的规则,依次地推
$GIT_DIR/info/exclude文件中定义的规则core.excludesfile中定义的全局规则
Git 忽略规则匹配语法
空格: 不匹配任意文件,可作为分隔符,可用反斜杠转义# 开头: 标识注释,可以使用反斜杠进行转义! 开头: 标识否定,该文件将会再次被包含,如果排除了该文件的父级目录,则使用!也不会再次被包含。可以使用反斜杠进行转义/ 结束: 只匹配文件夹以及在该文件夹路径下的内容,但是不匹配该文件/ 开始: 的模式匹配项目跟目录- 如果一个模式不包含斜杠,则它匹配相对于当前
.gitignore文件路径的内容,如果该模式不在.gitignore文件中,则相对于项目根目录 **: 匹配多级目录,可在开始,中间,结束 ?通用匹配单个字符[]: 通用匹配单个字符列表
示例:
bin/: 忽略当前路径下的bin文件夹,该文件夹下的所有内容都会被忽略,不忽略bin文件/bin: 忽略根目录下的bin文件/*.c: 忽略cat.c,不忽略build/cat.cdebug/*.obj: 忽略debug/io.obj,不忽略debug/common/io.obj和tools/debug/io.obj**/foo: 忽略/foo,a/foo,a/b/foo等a/**/b: 忽略a/b,a/x/b,a/x/y/b等!/bin/run.sh: 不忽略bin目录下的 run.sh 文件*.log: 忽略所有.log文件config.php: 忽略当前路径的config.php文件
.gitignore规则不生效
.gitignore 只能忽略那些原来没有被 track 的文件,如果某些文件已经被纳入了版本管理中,则修改 .gitignore 是无效的。
解决方法:删除本地缓存(改变成未 track 状态),再提交。
# 删除本地缓存(改变成未 `track` 状态)
$ git rm -r --cached .
# 提交
$ git add .
$ git commit -m 'update .gitignore'