git .gitignore 忽略

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

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

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

忽略文件的原则是:编辑器

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

举个例子:测试

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

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

而后,继续忽略Python编译产生的.pyc.pyodist等文件或目录:spa

# 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”。code

使用Windows的童鞋注意了,若是你在资源管理器里新建一个.gitignore文件,它会很是弱智地提示你必须输入文件名,可是在文本编辑器里“保存”或者“另存为”就能够把文件保存为.gitignore了。server

小结

  1. 忽略某些文件时,须要编写.gitignore
  2. .gitignore文件自己要放到版本库里,而且能够对.gitignore作版本管理!
  3. 从版本库中删除
    $ git rm test.txt
    rm 'test.txt'
    $ git commit -m "remove test.txt"

忽略文件夹写法

经测试发现,若要忽略一个文件夹下的部分文件夹,应该一个一个的标示。可能有更好的方法。
若test下有多个文件和文件夹。若要ignore某些文件夹,应该这个配置.gitignore文件。若test下有test1,test2,test3文件。要track test3,则.gitignore文件为:
test/test1
test/test2
!test/test3
若为:
test/
!test/test3 ,则不能track test3。
Git 中的文件忽略
1. 共享式忽略新建 .gitignore 文件,放在工程目录任意位置便可。.gitignore 文件能够忽略本身。忽略的文件,只针对未跟踪文件有效,对已加入版本库的文件无效。
2. 独享式忽略针对具体版本库 :.git/info/exclude针对本地全局:  git config --global core.excludefile ~/.gitignore
忽略的语法规则:
(#)表示注释
(*)  表示任意多个字符; 
(?) 表明一个字符;
 ([abc]) 表明可选字符范围
若是名称最前面是路径分隔符 (/) ,表示忽略的该文件在此目录下。
若是名称的最后面是 (/) ,表示忽略整个目录,但同名文件不忽略。
经过在名称前面加 (!) ,表明不忽略。
例子以下:
# 这行是注释
*.a                   # 忽略全部 .a 伟扩展名的文件
!lib.a                # 可是 lib.a 不忽略,即时以前设置了忽略全部的 .a
/TODO            # 只忽略此目录下 TODO 文件,子目录的 TODO 不忽略 
build/               # 忽略全部的 build/ 目录下文件
doc/*.txt           # 忽略如 doc/notes.txt, 可是不忽略如 doc/server/arch.txt
相关文章
相关标签/搜索