美文网首页
git忽略特殊文件,.gitignore的使用

git忽略特殊文件,.gitignore的使用

作者: Eroc | 来源:发表于2020-11-11 16:16 被阅读0次

    背景

    在使用 git 的时候,会遇到必须把某些文件放到 Git 工作目录中,但又不能提交它们的场景,比如说,保存了数据库密码的配置文件或者编译过程中生成的中间文件等等,每次 git status 都会显示 Untracked files ... ,有强迫症的童鞋心里肯定不爽。

    不过 git 也考虑了使用者的感受,故在 git 工作区的根目录下创建一个特殊的 .gitignore 文件,然后把要忽略的文件名填进去,git 就会自动忽略这些文件。

    忽略文件的一般原则如下:

    • 忽略操作系统自动生成的文件,比如缩略图等;
    • 忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如 Java 编译产生的 .class 文件;
    • 忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。

    .gitignore的语法

    语法规则很简单,与正则表达式类似,详情可以查看官网的介绍。以下列出常用的一些规则:

    • 空格 不匹配任意文件。
    • * 匹配任意文件
      #忽略 a 目录下的所有文件
      a/*
      
    • # 标识注释,可以使用反斜杠进行转义。
      #注释 test 文件
      #test
      
    • /* 匹配项目跟目录。
      #忽略根目录下的所有文件
      /
      
    • */ 只匹配文件夹以及在该文件夹路径下的内容,但是不匹配该文件。
      #忽略根目录下的 test/ 目录下的所有文件
      test/
      
    • ! 标识否定,该文件将会再次被包含,如果排除了该文件的父级目录,则使用 ! 也不会再次被包含。可以使用反斜杠进行转义。
      #不忽略 test 目录下的 excep.txt 文件
      !test/except.txt
      
    • ? 通用匹配单个字符。
      #忽略根目录下的 testa.txt、testb.txt 文件
      test?.txt
      
    • [] 通用匹配单个字符列表.
      #忽略根目录下的 testk.txt、testl.txt 文件
      test[k,l].txt
      
    • ** 匹配多级目录,可在开始,中间,结束。
      #忽略根目录下的a/b/c/test、fd/gg/test目录
      **/test
      

    .gitignore 的使用

    1. git 项目中创建 .gitignore 文件
      首先,在我们下载一个 git 项目的时候,是没有 .gitignore 文件的,需要我们自己手动创建,然后再按照上述的匹配规则,定义当前项目的提交规则。
      .gitignore 文件是可以提交到云端仓库中的,这就为该项目下的所有开发者都共享一套定义好的忽略规则。
    2. 定义 git 全局的 .gitignore 文件
      定义全局的忽略规则,可以通过修改 config 来实现。请注意,该规则是用来管理本地所有的 git 项目的,非指定项目,故该文件不能上传到云端仓库中。使用方法如下:
    #.gitignore可以放在任意位置,此处以用户根目录为例
    git config --global core.excludesfile ~/.gitignore
    

    .gitignore 规则不生效

    gitignore 文件只能忽略那些原来没有被 track 的文件,即没有被版本管理中的文件。如果在使用规则前,已经将该文件上传至版本库中,则修改 .gitignore 无效。
    解决方法就是清除本地缓存,然后再提交:

    git rm -r --cached .
    git add .
    git commit -m 'update .gitignore'
    

    相关文章

      网友评论

          本文标题:git忽略特殊文件,.gitignore的使用

          本文链接:https://www.haomeiwen.com/subject/ovgamktx.html