.gitignore文件
我们在使用git
管理项目的时候,有些文件是不希望纳入git
管理,或者不希望上传到github
,比如数据集、开发工具的配置文件、日志文件、临时文件等等。
这时我们可以通过创建.gitignore
文件,列出要忽略的文件模式,Git会根据这些模式规则来判断是否将文件添加到版本控制中。
格式规范
- 所有空行或者以注释符号 # 开头的行都会被 Git 忽略
- 可以使用标准的 glob 模式匹配
- 匹配模式最后跟斜杠(/)说明要忽略的是目录
- 要忽略指定模式以外的文件或目录,可以在模式前加上感叹号(!)进行取反
glob模式
所谓的 glob 模式是指 shell 所使用的简化了的正则表达式,匹配规则如下:
"*"
:星号匹配零个或多个任意字符[]
:匹配任何一个列在方括号中的字符,如[ab]
匹配a
或者匹配b
"?"
:问号匹配一个任意字符[n-m]
:匹配所有在这两个字符范围内的字符,如[0-9]
表示匹配所有0到9的数字
匹配示例
logs/
:忽略当前路径下的logs目录,包含logs下的所有子目录和文件/logs.txt
:忽略根目录下的logs.txt文件*.class
:忽略所有后缀为.class的文件!/classes/a.class
:不忽略classes目录下的a.class文件tmp/*.txt
:只忽略tmp目录下的.txt文件**/foo
:可以忽略/foo, a/foo, a/b/foo等
定义全局.gitignore文件
除了可以在项目中定义.gitignore
文件外,还可以设置全局的.gitignore
文件来管理所有Git项目的行为。
这种方式在不同的项目开发者之间是不共享的,是属于项目之上Git应用级别的行为。
可以在任意目录下创建相应的.gitignore
文件,然后再使用以下命令配置Git
1 | git config --global core.excludesfile ~/.gitignore |
.gitignore规则不生效
.gitignore
只能忽略那些原来没有被track
的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore
是无效的。所以一定要养成在项目开始就创建.gitignore
文件的习惯。
解决方法就是先把本地缓存删除(改变成未track状态),然后再提交:
1 | git rm -r --cached . |
参考
若汐缘的.gitignore文件