07.文件忽略

110 阅读3分钟

文件忽略

1.介绍

如果想将某个文件保留在项目中,又不想让它受到Git的跟踪管理,那么,我们可以使用.gitignore文件。只需要先创建该文件,然后添加到项目的根目录中,最后将我们想要忽略(让Git不进行跟踪)的文件名称填写到该文件中即可

2.应该忽略那些文件

1755778611049.png

3.注意

.gitignore对已经被使用git进行版本控制的文件无效,需要先使用git rm --cached取消对这个文件的版本控制才行

git rm --cached [文件名]

执行完上面的git rm命令后,在更新.gitignore文件就可以生效了

4.忽略优先级

  1. 命令行指定的忽略规则:通过git add -f <file>强制添加的文件会无视任何忽略规则,始终被跟踪
  2. .gitignore文件中的否定规则:在当前路径中定义的.gitignore具有较高优先级,仅对所在目录及其子目录生效
  3. 子目录中的.gitignore文件:子目录的.gitignore规则比父目录的更具体,会覆盖父目录中冲突的规则
  4. 父目录中的.gitignore文件:根目录的.gitignore适用于整个仓库,子目录未特殊指定的文件会遵循根目录规则
  5. .git/info/exclude文件:仓库本地的忽略规则,不会提交到版本库,仅对当前仓库有效
  6. 全局.gitignore 文件:通过git config --global core.excludesfile配置的全局忽略规则,对所有仓库有效

5.忽略规则的匹配语法

注释

以#开头的行被视为注释,Git会忽略这些行

通配符

  • *:匹配任意数量(包括零个)的任意字符
  • ?:匹配单个任意字符
  • [abc]:匹配括号内的任何一个字符
  • [0-9]或[a-z]:范围匹配,匹配括号内指定范围内的字符

路径匹配

  • /:在规则前面表示路径,如/aaa.txt表示当前.gitignore文件所在的路径下的aaa.txt文件(不包含子目录的aaa.txt文件)
  • /:在规则末尾表示目录,如build/表示忽略名为build的目录及其子内容
  • 如果规则没有以/结尾,则表示既匹配文件,也匹配目录名

否定匹配

在规则前添加!符号可以取消某个匹配规则,即不忽略符合该规则的文件或目录。如!aaa.txt表示即使有其他规则忽略了所有.txt文件,也不会忽略名为aaa.txt的文件

相对路径与绝对路径

.gitignore文件中的路径规则默认是相对于.gitignore文件所在目录的路径。如/aaa.txt表示当前.gitignore文件所在的路径中的aaa.txt文件。aaa.txt(没加/)则表示当前.gitignore文件所在的路径中的aaa.txt以及所有后代路径中的aaa.txt文件

多个规则顺序

Git按照.gitignore文件中规则的顺序进行处理,一旦找到匹配项,后续规则将不再对同一文件进行检查

如果一个文件或目录同时符合多个规则,则优先级较高的规则生效(通常是指令出现较早的规则)