GIT 忽略特殊文件

 


有些时候,你必须把某些文件放到Git工做目录中,但又不能提交它们,好比保存了数据库密码的配置文件啦,等等,每次git status都会显示Untracked files ...,有强迫症的童鞋内心确定不爽。git

好在Git考虑到了你们的感觉,这个问题解决起来也很简单,在Git工做区的根目录下建立一个特殊的.gitignore文件,而后把要忽略的文件名填进去,Git就会自动忽略这些文件。github

不须要从头写.gitignore文件,GitHub已经为咱们准备了各类配置文件,只须要组合一下就可使用了。全部配置文件能够直接在线浏览:https://github.com/github/gitignore正则表达式

忽略文件的原则是:shell

  1. 忽略操做系统自动生成的文件,好比缩略图等;
  2. 忽略编译生成的中间文件、可执行文件等,也就是若是一个文件是经过另外一个文件自动生成的,那自动生成的文件就不必放进版本库,好比Java编译产生的.class文件;
  3. 忽略你本身的带有敏感信息的配置文件,好比存放口令的配置文件。

举个例子:数据库

假设你在Windows下进行Python开发,Windows会自动在有图片的目录下生成隐藏的缩略图文件,若是有自定义目录,目录下就会有Desktop.ini文件,所以你须要忽略Windows自动生成的垃圾文件:vim

# Windows:
Thumbs.db
ehthumbs.db
Desktop.ini

而后,继续忽略Python编译产生的.pyc.pyodist等文件或目录: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 cleanui

使用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作版本管理!

 

 

1).gitignore介绍

 在工程实现过程当中,会生成一些中间文件,或者在项目中的部分文件是不须要进行版本管理的。对于这些文件应该对于Github来说是透明的。Github提供这种功能,能够本身指定哪些文件能够不被管理。具体方法是在版本管理的根目录下(与.git文件夹同级)建立一个  .gitignore(gitignore是隐藏文件,因此前面有个点)

                               gitignore - Specifies intentionally untracked files to ignore

 

(2)应用实例

          项目中有clist.h clist.c  main.c三个文件,编译执行后,生成了三个文件  clist.o  main.o   main(执行文件)。这三个文件是不须要进行版本管理的,因此须要忽略这些文件,使用 git  stauts查看后,发现这三个文件也是处于 Untracked files状态。而实际上咱们是想忽略他。

 

使用gitignore文件来解决这个问题,步骤是:

 

[plain] view plain copy

  1. S1:      touch  .gitignore     #建立gitignore隱藏文件  
  2. S2:      vim    .gitignore     #编辑文件,加入指定文件  
  3.          #下面是个人gitignore文件的内容  
  4.          #忽略gitignore文件  
  5.          .gitignore  
  6.          #忽略后缀名为.o和.a的文件  
  7.          *.[oa]  
  8.          #显示指定忽略名称为main的文件  
  9.          main  

 

 

文件.gitignore的格式规范:
A:#为注释   
B:可使用shell所使用的正则表达式来进行模式匹配   
C:匹配模式最后跟"/"说明要忽略的是目录 
D:使用!取反(例如目录中包含  test.a,而且gitignore文件中包含  *.[oa],若是在文件中加入 !test.a   代表忽略除test.a文件之外的后缀名为.a或者.o的文件)

配置完.gitignore文件后,执行git status命令,会发现那三个文件再也不是Untracked files了,也就完成了忽略指定文件的功能。
 

相关文章
相关标签/搜索