背景

在项目开发中,我们会把代码提交到 git 仓库中,来进行版本控制,但是代码中时常会存在一些没必要提交的文件或者目录,
如:

  • node_modules
  • *.log
  • .idea
  • target

等等,这是我们应该怎么办呢?

定义

.gitignore 文件就是来帮助我们忽略不需要版本控制的文件和目录。

规则

注意:匹配模式类似于正则

  • 空行:不匹配任何文件和目录,用来分隔
  • #:注释
  • *:匹配任意字符0次或者多次
  • ?:匹配任意字符1次
  • /开头:表示目录
  • /结尾:匹配目录以及目录下的内容,不匹配文件
  • []:括号里的字符可以匹配一个对应的字符
  • !:不忽略文件或者目录,如果文件的目录已经被忽略则不生效
    1
    2
    3
    4
    5
    6
    7
    #               注释
    *.log 忽略所有 .log 结尾的文件
    !sql.log 不忽略 sql.log
    /.idea 忽略项目根目录下的 .idea 文件,不包括其它目录下的
    /.idea/ 忽略项目根目录下的 .idea 目录,不包括其它目录下的
    /**/log/ 忽略项目中所有的 log 目录
    /**/target 忽略项目中所有的 target 目录

忽略规则查看

1
git check-ignore -v a.log

如何去除已加入版本控制中的文件或目录

1
2
3
4
5
6
# 删除本地缓存
git rm -r --cached .
# 重新添加
git add .
# 查看状态
git status