[TOC] #### 1. .gitignore 简介 --- .gitignore 文件的作用就是告诉 git 哪些文件不需要添加到版本管理中(定义忽略提交的文件) .gitignore 文件用来忽略被指定的文件或文件夹的改动,被记录在.gitignore文件里的文件或文件夹,是无法被 git 跟踪到的,换句话说,被忽略的文件是不会被放入到远程仓库里的。 也就是说,如果文件已经存在于远程仓库中,是无法通过 .gitignore 文件来忽略的 #### 2. .gitignore 注释 --- 所有空行或者以注释符号 # 开头的行都会被 git 忽略 以井号(#)开头的行是注释,将被忽略,空行可用于提高文件的可读性并对相关的模式行进行分组 ``` # 忽略编辑器配置目录 /.idea /.vscode ``` #### 3. / 开头或结尾的忽略 --- 之前在某篇文章中看到这句话: 以斜杠 `/` 开头表示忽略的是目录 后来发现并不是这样的,它真正的作用是只忽略同级的内容,而不忽略下级目录中的内容 **结论: / 位于头部的作用是只忽略当前目录下的内容;放在尾部的作用是只忽略目录,而不忽略文件** **头尾都没有 /** ``` # 忽略当前目录及下级目录中所有的 runtime # runtime 文件或目录都会被忽略 runtime ``` **前面有 /** ``` # 只忽略当前目录中的 runtime 文件或目录 # 不忽略下级目录中的 runtime 文件或目录 /runtime ``` **后面有 /** ``` # 只忽略当前目录和下级目录中的 runtime 目录 # 不忽略当前目录和下级目录中的 runtime 文件 runtime/ ``` **头尾都有 /** ``` # 只忽略当前目录中的 runtime 目录 /runtime/ ``` #### 4. glob 模式匹配忽略 --- 在 .gitignore 文件中可以使用标准的 glob 模式匹配 以星号 `*` 通配多个字符 ``` # 忽略 vendor 目录下的所有文件 /vendor/* # 忽略所有后缀名为 txt 的文件 *.txt ``` 以问号 `?` 通配单个字符 ``` # 忽略文件名称为一个字符, 后缀名为 php 的文件 ?.php ``` 以方括号 `[]` 包含单个字符的匹配列表 ``` # 忽略 125.php、135.php文件 1[23]5.php ``` 以叹号 `!` 表示不忽略(跟踪)匹配到的文件或目录 **【注意项】注意写法 要忽略的文件夹一定要结尾 `/*` ,否则不忽略规则将无法生效** ``` # 忽略vendor目录下的所有文件 /vendor/* # 不忽略vendor目录下的 1.php # 在已忽略的文件夹中不忽略指定文件 !/vendor/1.php # 不忽略vendor目录下 dev目录 # 在已忽略的文件夹中不忽略指定文件夹 !/vendor/dev ``` #### 5. .gitignore 全局忽略 --- git 允许创建全局 .gitignore 文件,所有本地 git 仓库都将遵守全局的忽略规则。 该文件的名称和位置没有要求,只要在 git 配置文件中路径指定正确即可。 例如,将 `~/.gitignore_global` 设置为全局 git 忽略文件,可以执行以下操作: ``` # 创建文件 touch ~/.gitignore_global # 将文件添加到 git 配置 git config --global core.excludesfile ~/.gitignore_global ``` mac 中会产生很多 【.DS_Store】 文件,这个文件是没有必要被 git 管理的,可以将它添加到全局忽略中 ``` echo .DS_Store >> ~/.gitignore_global git config --global core.excludesfile ~/.gitignore_global ``` #### 6. 忽略已提交到远程库的内容 --- **删除暂存区中的文件或目录** ``` git rm --cached <file> git rm -r --cached <folder> ``` **在 .gitignore 中添加忽略配置** ``` <file> /<folder> ``` **推送到远程仓库** ``` git add .gitignore git commit -m '忽略文件' git push origin master ``` #### 7. 常用的忽略规则使用示例 --- ``` # 忽略编辑器配置目录 .idea .vscode .hbuilderx # uniapp /unpackage # ThinkPHP5.0 /runtime /vendor /thinkphp # mac .DS_Store # 忽略配置公众号网页授权域名时的校验文件 MP_verify_*.txt # 忽略 Let's Encrypt SSL 证书目录 .well-known # 前台静态资源(如:uniapp打包后的文件部署到/h5目录下) /public/h5/* !/public/h5/.gitkeep ```