• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 在 centOS 上设置 Git 配置文件 .gitignore

    在项目开发工程中,并不是所有文件都需要保存到版本库中的。在 Git 工作区的根目录下创建一个.gitignore文件,然后把要忽略的文件名填进去,在 Git 提交git add .的时候,就会自动忽略这些文件或目录。也不会被追踪(tracked),git push的时候也不会上传到 Git 仓库。

    Git 忽略规则优先级

    .gitignore文件中,每一行指定一个忽略规则,Git 检查忽略规则的时候有多个来源,它的优先级如下(由高到低):

    1. 从命令行中读取可用的忽略规则。
    2. 当前目录定义的规则。
    3. 父级目录定义的规则,依次递推。
    4. $GIT_DIR/info/exclude文件中定义的规则。
    5. core.excludesfile中定义的全局规则。
    6. Git 忽略规则

      • 如果本地仓库文件已被跟踪,那么即使在.gitignore中设置了忽略,也不起作用。git 跟踪文件,而不是目录。
      • .gitignore文件也会被上传的到远程仓库,所以,同一个仓库的人可以使用同一个.gitignore文件。
      • .gitignore文件中,每行表示一种模式。
      • 空行不匹配任何文件。

      注释

      注释使用#开头,后面跟注释内容。如下所示:

      # this is .gitignore file.
      # 以下是忽略的文件
      


      忽略文件和目录

      # 目录结构如下所示:
      .
      ├── folder
      │   └── file1
      └── src
          ├── folder
          └── utils
              └── folder
      
      # this is .gitignore file.
      # 以下是忽略的文件
       
      folder
      

      表示忽略 folderName 文件和 folderName 目录,会自动搜索多级目录,比如:*/*/folderName。同名的 folder 目录、src/folder 文件、src/utils/folder 文件都会被忽略。


      仅忽略文件

      # this is .gitignore file.
      # 以下是忽略的文件
      
      folder 
      !folder/
      

      !表示反向操作。src/folder 文件、src/utils/folder 文件会被忽略,而同名的 folder 目录不会被忽略。


      忽略目录

      # this is .gitignore file.
      # 以下是忽略的文件
       
      folder/
      

      folder 目录会被忽略,而同名的 src/folder 文件和 src/utils/folder 文件不会被忽略。


      使用通配符

      • *:匹配多个字符。
      • ?:匹配除/外的任意一个字符。
      • []:匹配多个列表中的字符。
      # 目录结构如下所示:
      .
      ├── src
      │   ├── add.c
      │   ├── add.i
      │   └── add.o
      ├── test.c
      ├── test.i
      └── test.o
      
      # this is .gitignore file.
      # 以下是忽略的文件
       
      *.[io]
      

      test.i 文件、test.o 文件、src/add.o 文件、src/add.i 文件会被忽略,而 test.c 文件和 add.c 文件不会被忽略。注意:这里忽略的匹配模式是多级目录的。


      反向操作

      !:用来否定忽略。比如前面用了*.txt,然后使用!*a.txt,则这个 a.txt 不会被忽略。

      # this is .gitignore file.
      # 以下是忽略的文件
      
      folderName
      !folderName/
      

      表示仅忽略 folderName 文件,而不忽略 folderName 目录。


      多级目录

      /**:斜杠后紧跟两星号,表示多级目录。

      # this is .gitignore file.
      # 以下是忽略的文件
       
      src/**/file
      

      可以表示忽略 src/folder1/file 、src/folder1/folder2/***/foldern/file 等。