在使用远程仓库的项目中,往往有一些文件夹或文件不需要被追踪文件状态,如node_modules
、dist
、.idea
、.vscode
等。
.gitignore文件就是用来解决这个问题的,这个文件通过一行行的规则来匹配忽略目标文件或文件夹。
1. 语法
以”#”号开头表示注释;
以斜杠“/”开头表示目录;
以星号“*”通配多个字符,匹配斜线以外的任何字符;
以问号“?”通配单个字符,匹配除 "/" 以外的任何一个字符;
以方括号“[]”包含单个字符的匹配列表;
以叹号“!”表示不忽略(跟踪)匹配到的文件或目录;
注意:
/
在文件夹名前,表示根目录下的某个文件夹,/test/表示忽略根目录下的/test/目录的全部内容,而test/表示忽略文件夹test下的全部内容,不管是根目录下的/test/,还是某个子目录下的test文件夹,比如:/child/test,都会被忽略
2. 规则
1.1 已经被追踪的文件或文件夹,即使添加相应的规则,也不会被忽略,需要手动删除。要停止跟踪当前已被跟踪的文件,可使用 git rm --cached 从索引中移除该文件。文件名随后会被添加到 .gitignore
文件中,以防止该文件在以后的提交中被重新引入。
1.2 忽略规则存在覆盖情况,如果第一行范围较小,而后面的行范围较大,那么前面的规则将会被后面的规则覆盖。
1.3 .ignore 配置文件是按行从上到下进行规则匹配的,意味着如果前面的规则匹配的范围更大,则后面的规则将不会生效
3. 示例
创建示例文件结构项目
```shell
C:.
│ .gitignore
│ c.txt
│ f.txt
│ g.md
│
├───.idea
│ .gitignore
│ ignore.iml
│ modules.xml
│ vcs.xml
│ workspace.xml
│
├───dist
│ │ a.txt
│ │ b.txt
│ │ c.md
│ │
│ └───cf
│ t.rust
│
└───src
│ a.txt
│ c.txt
│ e.md
│ f.txt
│
└───dist
a.txt
c.txt
d.md
编写.gitignore文件内容
/dist #忽略dist文件夹下的所有文件,包括更深层的文件夹
/**/a.txt #忽略所有文件夹下的a.txt文件,**匹配任一级目录,如/a/a.txt、/a/b/c/apifox.txt等
*.md #忽略所有后缀为.md的文件
f.txt #忽略所有的f.txt文件
src/**/c.txt #忽略src文件夹下的任意层级子文件夹下的c.txt文件
只有根目录下的c.txt未包含在忽略规则内:
本文由 yuin 创作,
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。