Git忽略提交规则 - .gitignore配置详解

1,896

前言

     很巧不巧,小编又来分享技术啦。。。
     上期,我们提到了“git高危操作”,但小编觉得在了解”高危操作“之前,我们先突破一下“Git忽略提交”吧。温馨提示一下噢!,“Git忽略提交”在企业开发时,是程序员必备的小技能噢!

正文

     或不多说,我们现在就开始进入正题吧(跟上小编的步伐噢,别走丢了哈)。嗯。。。。

     首先,我们来看一段英文哈。。。

    Ignoring Files

      Often, you’ll have a class of files that you don’t want Git to automatically add or even show you as being untracked. These are generally automatically generated files such as log files or files produced by your build system. In such cases, you can create a file listing patterns to match them named .gitignore. Here is an example .gitignore file:

$ cat .gitignore
*.[oa]
*~

    The first line tells Git to ignore any files ending in “.o” or “.a” — object and archive files that may be the product of building your code. The second line tells Git to ignore all files whose names end with a tilde (~), which is used by many text editors such as Emacs to mark temporary files. You may also include a log, tmp, or pid directory; automatically generated documentation; and so on. Setting up a .gitignore file for your new repository before you get going is generally a good idea so you don’t accidentally commit files that you really don’t want in your Git repository.

   大家都是技术高手,相信这2小段英文难不倒大家,那为啥小编贴上这么2段英文呐?这不就是Git忽略文件的官方文档,你们真实高手,一看就读出来这是git官方文档的解释,但小编觉得解释归解释,但是要真实地掌握确实有些难点之处,毕竟实操才是最真实的体现了程序员是否真的掌握了它,你们说对不对哇!

   好啦!下面小编真实的操练一遍,详细的展示和讲解之后,详细大家就对“Git忽略提交”这项小技能更有影响啦!

详细步骤

       第一步

         选择一个git项目,右键选择【Git Bash Here】,打开Git命令控制台如下图:


此时,我们进入管理该git项目的Git控制台啦!

      第二步

       使用' touch .gitignore '命令,在项目根目录下生成一个 .gitignore文件 如下图所示:


     当我们按键盘的"Enter"键后,该git项目生成了 ' .gitignore' 文件,小编带大家去看下哈,如下图:


     你们是否有成功生成   .gitignore  文件呐?

     步骤三

      忽略某个文件夹

      1.使用 ‘ # ’ 号 进行注释表示需要注释的文件的用途,为什么忽略它

          说明:以“”开头的行都会被 Git 忽略。即#开头的文件标识注释,可以使用反斜杠进行转义。实操如下:


         我们发现,' # ' 所在行 全是绿色的,这表示 注释了该行。

      2. 直接在  ' .gitignore'文件中加 文件名即可,我们以忽略 node 的‘node_modules’为例 如下图:


   此时,我们用VSCode打开项目 查看‘node_modules’ 文件加是否变灰,并且git没有显示‘node_modules’内容。如下图所示:


     此时,你修改了node_modules,VSCode的git是不会读取它的,自然你提交时也忽略了‘node_modules’,自然你每次提交项目时,不需要为node 下载的模块内容进行提交git远程库了。
 

    关于其他忽略规则如下:
     1)空格不匹配任意文件,可作为分隔符,可用反斜杠转义
     2)以“”开头的行都会被 Git 忽略。即#开头的文件标识注释,可以使用反斜杠进行转义。
     3)可以使用标准的glob模式匹配。所谓的glob模式是指shell所使用的简化了的正则表达式。
      4)以斜杠"/"开头表示目录;"/"结束的模式只匹配文件夹以及在该文件夹路径下的内容,但是不匹配该文件;"/"开始的模式匹配项目跟目录;如果一个模式不包含斜杠,则它匹配相对于当前 .gitignore 文件路径的内容,如果该模式不在 .gitignore 文件中,则相对于项目根目录。
     5)以星号"*"通配多个字符,即匹配多个任意字符;使用两个星号"**" 表示匹配任意中间目录,比如`a/**/z`可以匹配 a/z, a/b/z 或 a/b/c/z等。
    6)以问号"?"通配单个字符,即匹配一个任意字符;
    7)以方括号"[]"包含单个字符的匹配列表,即匹配任何一个列在方括号中的字符。比如[abc]表示要么匹配一个a,要么匹配一个b,要么匹配一个c;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配。比如[0-9]表示匹配所有0到9的数字,[a-z]表示匹配任意的小写字母)。
    8)以叹号"!"表示不忽略(跟踪)匹配到的文件或目录,即要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。需要特别注意的是:如果文件的父目录已经被前面的规则排除掉了,那么对这个文件用"!"规则是不起作用的。也就是说"!"开头的模式表示否定,该文件将会再次被包含,如果排除了该文件的父级目录,则使用"!"也不会再次被包含。可以使用反斜杠进行转义。