首页 > 其他分享 >.gitignore 文件语法介绍

.gitignore 文件语法介绍

时间:2023-01-28 15:11:34浏览次数:54  
标签:文件 匹配 语法 文件夹 行尾 foo gitignore

.gitignore 文件的作用

A gitignore file specifies intentionally untracked files that Git should ignore. Files already tracked by Git are not affected; see the NOTES below for details.

.gitignore 文件指定了未被跟踪的一组文件,这些文件应该被 Git 程序忽略(即,git status 时,不再提示这些文件尚未被跟踪)。如果文件已经被 Git 程序跟踪,则这些文件不会受到 .gitignore 的影响。

.gitignore 的文件结构和语法

.gitignore 是一个纯文本文件,文件中的每一行都代表一个匹配模式(pattern)。GIT 从上至下读取文件,后面行的优先级大于前面行。

匹配模式

  • 空行:无意义,可以作为分隔行,增加可读性(readability);
  • #开头: 注释。注意:# 必须为行的第一个字符。如果行要以 # 开头,需要在 # 之前插入一个 \,即,\#
  • 行首空格不会被忽略,因为文件名中可以包含空格;
  • 行尾空格会被忽略,如果想包含行尾空格,则需要在每个行尾空格之前插入一个 \
  • !(取反操作): 如果文件被前面的模式排除,但是匹配了 ! 后面的模式,则该文件将再次被包含进来‘
  • /(目录分隔符): 目录分隔符可以出现在行首、行中、行尾,
    • 行首:/foo
    • 行中:foo/bar
    • 行尾:foo/
  • *通配符: 可以匹配任意长度的任意字符串(字符串中不能包含 /);
  • **通配符: 可以匹配任意长度的任意字符串(字符串中可以包含 /);
  • ?通配符: 可以匹配长度为 1 的任意字符串(字符串中不能包含 /);
  • 范围通配符: 如 [a-zA-Z],可以匹配可以匹配长度为 1 的只包含英文字母的字符串;
  • 如果模式匹配了文件夹,也相当于匹配了文件夹的所有文件;

/ 的一些说明

  • 行尾:如果 / 出现在行尾,则 匹配模式 只会包含文件夹,而不会包含文件。
    比如,foo 会匹配所有路径中包含 foo 的文件和文件夹,而 foo/ 只会匹配所有路径中包含 foo 的文件夹。

  • 行首和行中:如果 / 出现在行首和行中,则 匹配模式 会以 .gitignore 所在的目录为基准,对所有的相对路径进行匹配。此时,模式必须要和相对路径的开头部分匹配,
    比如 /foo, 会匹配 foo,但是不会匹配 bar/foo

一些例子

匹配模式 说明
foo.* 匹配所有以 foo. 开头的文件,如,foo.cfoo.java
!foo/bar 不匹配 foo/bar 文件或者文件夹
foo/**/bar 匹配 foo 文件夹下的中以 bar 开头的文件或者文件夹

标签:文件,匹配,语法,文件夹,行尾,foo,gitignore
From: https://www.cnblogs.com/revc/p/17070338.html

相关文章