有些时候,你必须把某些文件放到Git工做目录中,但又不能提交它们,好比保存了数据库密码的配置文件啦,等等,每次git status
都会显示Untracked files ...
,有强迫症的童鞋内心确定不爽。git
好在Git考虑到了你们的感觉,这个问题解决起来也很简单,在Git工做区的根目录下建立一个特殊的.gitignore
文件,而后把要忽略的文件名填进去,Git就会自动忽略这些文件。github
不须要从头写.gitignore
文件,GitHub已经为咱们准备了各类配置文件,只须要组合一下就可使用了。全部配置文件能够直接在线浏览:https://github.com/github/gitignore正则表达式
忽略文件的原则是:shell
.class
文件;举个例子:数据库
假设你在Windows下进行Python开发,Windows会自动在有图片的目录下生成隐藏的缩略图文件,若是有自定义目录,目录下就会有Desktop.ini
文件,所以你须要忽略Windows自动生成的垃圾文件:vim
# Windows: Thumbs.db ehthumbs.db Desktop.ini
而后,继续忽略Python编译产生的.pyc
、.pyo
、dist
等文件或目录:app
# Python: *.py[cod] *.so *.egg *.egg-info dist build
加上你本身定义的文件,最终获得一个完整的.gitignore
文件,内容以下:编辑器
# Windows: Thumbs.db ehthumbs.db Desktop.ini # Python: *.py[cod] *.so *.egg *.egg-info dist build # My configurations: db.ini deploy_key_rsa
最后一步就是把.gitignore
也提交到Git,就完成了!固然检验.gitignore
的标准是git status
命令是否是说working directory clean
。ui
使用Windows的童鞋注意了,若是你在资源管理器里新建一个.gitignore
文件,它会很是弱智地提示你必须输入文件名,可是在文本编辑器里“保存”或者“另存为”就能够把文件保存为.gitignore
了。spa
有些时候,你想添加一个文件到Git,但发现添加不了,缘由是这个文件被.gitignore
忽略了:
$ git add App.class The following paths are ignored by one of your .gitignore files: App.class Use -f if you really want to add them.
若是你确实想添加该文件,能够用-f
强制添加到Git:
$ git add -f App.class
或者你发现,多是.gitignore
写得有问题,须要找出来到底哪一个规则写错了,能够用git check-ignore
命令检查:
$ git check-ignore -v App.class .gitignore:3:*.class App.class
Git会告诉咱们,.gitignore
的第3行规则忽略了该文件,因而咱们就能够知道应该修订哪一个规则。
忽略某些文件时,须要编写.gitignore
;
.gitignore
文件自己要放到版本库里,而且能够对.gitignore
作版本管理!
在工程实现过程当中,会生成一些中间文件,或者在项目中的部分文件是不须要进行版本管理的。对于这些文件应该对于Github来说是透明的。Github提供这种功能,能够本身指定哪些文件能够不被管理。具体方法是在版本管理的根目录下(与.git文件夹同级)建立一个 .gitignore(gitignore是隐藏文件,因此前面有个点)
gitignore - Specifies intentionally untracked files to ignore
项目中有clist.h clist.c main.c三个文件,编译执行后,生成了三个文件 clist.o main.o main(执行文件)。这三个文件是不须要进行版本管理的,因此须要忽略这些文件,使用 git stauts查看后,发现这三个文件也是处于 Untracked files状态。而实际上咱们是想忽略他。
使用gitignore文件来解决这个问题,步骤是:
[plain] view plain copy
文件.gitignore的格式规范:
A:#为注释
B:可使用shell所使用的正则表达式来进行模式匹配
C:匹配模式最后跟"/"说明要忽略的是目录
D:使用!取反(例如目录中包含 test.a,而且gitignore文件中包含 *.[oa],若是在文件中加入 !test.a 代表忽略除test.a文件之外的后缀名为.a或者.o的文件)
配置完.gitignore文件后,执行git status命令,会发现那三个文件再也不是Untracked files了,也就完成了忽略指定文件的功能。