Do more! Do better!

编写gitignore

Posted on By zjk

作用

忽略Git系统不需要追踪(track)的文件。当然,你不追踪这些文件,可以平时不用”git add”去把它们加到索引中。 但是项目中到处有未追踪(untracked)的文件,使”git add .” 和”git commit -a” 变得实际上没有用处。有gitignore会方便很多,公用一个ignore规则也有利于团队协作。

注意

1.git 对于 .gitignore 配置文件是按行从上到下进行规则匹配的,意味着如果前面的规则匹配的范围更大,则后面的规则将不会生效

2.被过滤掉的文件就不会出现在你的GitHub库中了,当然本地中还有,只是push的时候不会上传。

3.如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。那么解决方法就是先把本地缓存删除(改变成未track状态),然后再提交:

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

4. 全局的配置设置方法为:

$git config –global core.excludesfile ~/.gitignore

这样,修改 ~/.gitignore 这个文件将作用于所有 git 项目,并且作用于项目实例中的所有被跟踪的目录。

5.通过git ls-flies可以查看加入版本管理的文件。

语法

以”#”号开头表示注释
以斜杠“/”开头表示目录
以星号“*”通配多个字符
以问号“?”通配单个字符 以方括号“[]”包含单个字符的匹配列表
以叹号“!”表示不忽略(跟踪)匹配到的文件或目录

语法示例:
1、file/
说明:忽略目录file下的全部内容,不管是根目录下的/file/目录,还是某个子目录/child/file/目录,都会被忽略。

2、/file/
说明:忽略根目录下的/fd1/目录的全部内容
3、规则
/*
!.gitignore
说明:忽略所有文件,但不忽略.gitignore文件。

4.

# 忽略 .a 文件
*.a

# 但否定忽略 lib.a, 尽管已经在前面忽略了 .a 文件
!lib.a

# 仅在当前目录下忽略 TODO 文件, 但不包括子目录下的 subdir/TODO
/TODO

# 忽略 build/ 文件夹下的所有文件
build/

# 忽略 doc/notes.txt, 不包括 doc/server/arch.txt
doc/*.txt

# 忽略所有的 .pdf 文件 在 doc/ directory 下的
doc/**/*.pdf