gitignore用法

文章目录
  1. 1. 前言
  2. 2. gitignore规则
    1. 2.1. 基本语法
    2. 2.2. 示例
  3. 3. push之后添加gitignore
  4. 4. 添加gitignore后pull错误
  5. 5. 自动生成gitignore
  6. 6. 书签

前言

有些时候,我们必须把某些文件放到Git工作目录中,但又不能提交它们,比如保存了数据库密码的配置文件、项目运行时生成的临时文件等等,每次git status都会显示Untracked files ...,让人不爽。

好在Git考虑到了大家的感受,在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件。

gitignore规则

基本语法

  • 以斜杠/开头表示目录
  • 以星号*通配多个字符;
  • 以问号?通配单个字符
  • 以方括号[]包含单个字符的匹配列表
  • 以叹号!表示不忽略(跟踪)匹配到的文件或目录

示例

1
2
3
4
5
6
7
# 这是注释行,将被忽略
*.a # 忽略所有以.a为扩展名的文件
!lib.a # 但是名为lib.a的文件或目录不要忽略,即使前面设置了对*.a的忽略
/TODO # 只忽略根目录下的TODO文件,子目录中的TODO文件不忽略
/target/ # 只忽略根目录下的target目录中的全部文件
target/ # 忽略所有target目录中的文件
doc/*.txt # 忽略文件如doc/notes.txt,但是文件如doc/server/arch.txt不忽略

push之后添加gitignore

gitignore只能作用于 Untracked Files,如果某些文件(add和commit过的文件)已经被纳入了版本管理中,则修改gitignore是无效的。解决方法就是先把本地缓存删除(改变成Untracked状态),然后再提交。

1
2
3
4
5
git pull
git rm -r --cached .
git add .
git commit -m 'update .gitignore'
git push

如果是单个文件需要Untrack,git rm -r --cached .建议改成git rm -r --cached path/filename

添加gitignore后pull错误

push之后添加了gitignore,也就是一部分的Tracked Files,现在不再Track。这时,其他用户在pull代码的时候,会出现错误:
“The following untracked working tree files would be overwritten by merge”

解决办法:

1
2
3
git reset --hard HEAD    
git clean -f -d
git pull

自动生成gitignore

1、访问网址:https://www.gitignore.io/

2、输入操作系统、IDE、编程语言等,就能自动生成通用的gitignore文件。

3、根据自己的实际需要,增删一些配置。

书签

Github使用.gitignore文件忽略不必要上传的文件
http://blog.csdn.net/gjy211/article/details/51607347

Git忽略规则
http://www.cnblogs.com/qwertWZ/archive/2982231.html

忽略特殊文件

A collection of useful .gitignore templates
https://github.com/github/gitignore

解决Git在添加ignore文件之前就提交了项目无法再过滤问题
http://www.2cto.com/kf/201612/571312.html