iMisty的技术栈

iMisty的技术栈

Git的.gitingore规则

Git
935
2020-09-03

Git 忽略规则匹配语法

在 .gitignore 文件中,每一行的忽略规则的语法如下:

  • 空格不匹配任意文件,可作为分隔符,可用反斜杠转义
  • #开头的模式标识注释,可以使用反斜杠进行转义
  • ! 开头的模式标识否定,该文件将会再次被包含,如果排除了该文件的父级目录,则使用 ! 也不会再次被包含。可以使用反斜杠进行转义
  • / 结束的模式只匹配文件夹以及在该文件夹路径下的内容,但是不匹配该文件
  • / 开始的模式匹配项目跟目录
  • 如果一个模式不包含斜杠,则它匹配相对于当前 .gitignore 文件路径的内容,如果该模式不在 .gitignore 文件中,则相对于项目根目录
  • **匹配多级目录,可在开始,中间,结束
  • ?通用匹配单个字符
  • []通用匹配单个字符列表

语法应用实例

    # 此为注释 – 将被 Git 忽略

    # 忽略所有 .a 结尾的文件
    *.a

    # 但 lib.a 除外
    !lib.a

    # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir
    /TODO/TODO

    # 忽略 build/ 目录下的所有文件
    build/

    # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
    doc/*.txt

文件已经被添加到版本控制怎么办

已经被track的文件需要执行如下命令,即可将文件变为untrack状态,然后在gitignore文件中添加忽略,此时文件就会被版本控制系统排除在外

  1. git rm -r --cached filename
  2. git add .
  3. git commit -m 'commit .gitingnore'

idea 使用add会将ignore文件里面排除的也添加到版本管理

  • 首先添加忽略文件.gitingore进版本控制
  • 然后提交该文件,随后 执行git add . 添加其他文件,此时会排除匹配的忽略文件