[TOC] #### 1. .gitignore 簡(jiǎn)介 --- .gitignore 文件的作用就是告訴 git 哪些文件不需要添加到版本管理中(定義忽略提交的文件) .gitignore 文件用來(lái)忽略被指定的文件或文件夾的改動(dòng),被記錄在.gitignore文件里的文件或文件夾,是無(wú)法被 git 跟蹤到的,換句話說(shuō),被忽略的文件是不會(huì)被放入到遠(yuǎn)程倉(cāng)庫(kù)里的。 也就是說(shuō),如果文件已經(jīng)存在于遠(yuǎn)程倉(cāng)庫(kù)中,是無(wú)法通過(guò) .gitignore 文件來(lái)忽略的 #### 2. .gitignore 注釋 --- 所有空行或者以注釋符號(hào) # 開(kāi)頭的行都會(huì)被 git 忽略 以井號(hào)(#)開(kāi)頭的行是注釋,將被忽略,空行可用于提高文件的可讀性并對(duì)相關(guān)的模式行進(jìn)行分組 ``` # 忽略編輯器配置目錄 /.idea /.vscode ``` #### 3. / 開(kāi)頭或結(jié)尾的忽略 --- 之前在某篇文章中看到這句話: 以斜杠 `/` 開(kāi)頭表示忽略的是目錄 后來(lái)發(fā)現(xiàn)并不是這樣的,它真正的作用是只忽略同級(jí)的內(nèi)容,而不忽略下級(jí)目錄中的內(nèi)容 **結(jié)論: / 位于頭部的作用是只忽略當(dāng)前目錄下的內(nèi)容;放在尾部的作用是只忽略目錄,而不忽略文件** **頭尾都沒(méi)有 /** ``` # 忽略當(dāng)前目錄及下級(jí)目錄中所有的 runtime # runtime 文件或目錄都會(huì)被忽略 runtime ``` **前面有 /** ``` # 只忽略當(dāng)前目錄中的 runtime 文件或目錄 # 不忽略下級(jí)目錄中的 runtime 文件或目錄 /runtime ``` **后面有 /** ``` # 只忽略當(dāng)前目錄和下級(jí)目錄中的 runtime 目錄 # 不忽略當(dāng)前目錄和下級(jí)目錄中的 runtime 文件 runtime/ ``` **頭尾都有 /** ``` # 只忽略當(dāng)前目錄中的 runtime 目錄 /runtime/ ``` #### 4. glob 模式匹配忽略 --- 在 .gitignore 文件中可以使用標(biāo)準(zhǔn)的 glob 模式匹配 以星號(hào) `*` 通配多個(gè)字符 ``` # 忽略 vendor 目錄下的所有文件 /vendor/* # 忽略所有后綴名為 txt 的文件 *.txt ``` 以問(wèn)號(hào) `?` 通配單個(gè)字符 ``` # 忽略文件名稱為一個(gè)字符, 后綴名為 php 的文件 ?.php ``` 以方括號(hào) `[]` 包含單個(gè)字符的匹配列表 ``` # 忽略 125.php、135.php文件 1[23]5.php ``` 以嘆號(hào) `!` 表示不忽略(跟蹤)匹配到的文件或目錄 **【注意項(xiàng)】注意寫法 要忽略的文件夾一定要結(jié)尾 `/*` ,否則不忽略規(guī)則將無(wú)法生效** ``` # 忽略vendor目錄下的所有文件 /vendor/* # 不忽略vendor目錄下的 1.php # 在已忽略的文件夾中不忽略指定文件 !/vendor/1.php # 不忽略vendor目錄下 dev目錄 # 在已忽略的文件夾中不忽略指定文件夾 !/vendor/dev ``` #### 5. .gitignore 全局忽略 --- git 允許創(chuàng)建全局 .gitignore 文件,所有本地 git 倉(cāng)庫(kù)都將遵守全局的忽略規(guī)則。 該文件的名稱和位置沒(méi)有要求,只要在 git 配置文件中路徑指定正確即可。 例如,將 `~/.gitignore_global` 設(shè)置為全局 git 忽略文件,可以執(zhí)行以下操作: ``` # 創(chuàng)建文件 touch ~/.gitignore_global # 將文件添加到 git 配置 git config --global core.excludesfile ~/.gitignore_global ``` mac 中會(huì)產(chǎn)生很多 【.DS_Store】 文件,這個(gè)文件是沒(méi)有必要被 git 管理的,可以將它添加到全局忽略中 ``` echo .DS_Store >> ~/.gitignore_global git config --global core.excludesfile ~/.gitignore_global ``` #### 6. 忽略已提交到遠(yuǎn)程庫(kù)的內(nèi)容 --- **刪除暫存區(qū)中的文件或目錄** ``` git rm --cached <file> git rm -r --cached <folder> ``` **在 .gitignore 中添加忽略配置** ``` <file> /<folder> ``` **推送到遠(yuǎn)程倉(cāng)庫(kù)** ``` git add .gitignore git commit -m '忽略文件' git push origin master ``` #### 7. 常用的忽略規(guī)則使用示例 --- ``` # 忽略編輯器配置目錄 .idea .vscode .hbuilderx # uniapp /unpackage # ThinkPHP5.0 /runtime /vendor /thinkphp # mac .DS_Store # 忽略配置公眾號(hào)網(wǎng)頁(yè)授權(quán)域名時(shí)的校驗(yàn)文件 MP_verify_*.txt # 忽略 Let's Encrypt SSL 證書(shū)目錄 .well-known # 前臺(tái)靜態(tài)資源(如:uniapp打包后的文件部署到/h5目錄下) /public/h5/* !/public/h5/.gitkeep ```