有些时候,你必须把某些文件放到Git工作目录中,但又不能提交它们,比如保存了数据库密码的配置文件啦,等等,每次git status都会显示“Untracked files …”,有强迫症的童鞋心里肯定不爽。
好在Git考虑到了大家的感受,这个问题解决起来也很简单,在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件。
不需要从头写.gitignore文件,GitHub已经为我们准备了各种配置文件,只需要组合一下就可以使用了。所有配置文件可以直接在线浏览:https://github.com/github/gitignore
忽略文件的原则是:
- 忽略操作系统自动生成的文件,比如缩略图等;
- 忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如Java编译产生的.class文件;
- 忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。
举个例子:
假设你在Windows下进行Python开发,Windows会自动在有图片的目录下生成隐藏的缩略图文件,如果有自定义目录,目录下就会有Desktop.ini文件,因此你需要忽略Windows自动生成的垃圾文件:
# Windows:
Thumbs.db
ehthumbs.db
Desktop.ini
然后,继续忽略Python编译产生的.pyc、.pyo、dist等文件或目录:
# 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”。
使用Windows的童鞋注意了,如果你在资源管理器里新建一个.gitignore
文件,它会非常弱智地提示你必须输入文件名,但是在文本编辑器里“保存”或者“另存为”就可以把文件保存为.gitignore
了。
小结
- 忽略某些文件时,需要编写.gitignore。
- .gitignore文件本身要放到版本库里,并且可以对.gitignore做版本管理!
- 从版本库中删除
$ 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