#### 1. git 無(wú)法提交空目錄? --- 相信大家在項(xiàng)目中肯定會(huì)發(fā)現(xiàn)空目錄是不會(huì)被 git 追蹤 (track) 的,但這是為什么呢 ? 因?yàn)?git 最初的設(shè)計(jì)是用來(lái)索引文件的,所以 git 只關(guān)注文件,不關(guān)心目錄,但是在有些場(chǎng)景下空目錄也需要被追蹤的 #### 2. 如何提交一個(gè)空目錄 ? --- git 無(wú)法追蹤空目錄,但當(dāng)想要追蹤一個(gè)空目錄時(shí),最主流的做法是在這個(gè)空目錄中新建一個(gè) .gitkeep 文件,這只是一個(gè)約定俗成的空目錄識(shí)別文件名,除了占位識(shí)別空目錄,沒(méi)有其他意義,在很多開(kāi)源項(xiàng)目中的也是使用這個(gè)文件名,比如: vue cli 2 中的 static 目錄 這個(gè)占位文件名不是一定要非是 .gitkeep 才行,換個(gè)名字一樣可以,但使用 .gitkeep 更加規(guī)范,別人一看就知道這是一個(gè)空目錄,vscode 插件也能將其識(shí)別為 git 相關(guān)文件,在其文件名前顯示 git 圖標(biāo) 是不是覺(jué)得這種解決方案感覺(jué)有點(diǎn)扯淡,為什么提交不了空目錄,一定要放個(gè)文件才行 抱著疑惑的態(tài)度查找資料,在下面這個(gè)鏈接我找到解釋 [https://git.wiki.kernel.org/index.php/GitFaq#Can_I_add_empty_directories.3F](https://git.wiki.kernel.org/index.php/GitFaq#Can_I_add_empty_directories.3F) ![](https://img.itqaq.com/art/content/3ab65133b3186fb34049776eefafff1c.png) 翻譯后 ![](https://img.itqaq.com/art/content/02716f6ec19fe3896e516f8a825c8e9e.png) #### 3. 應(yīng)用場(chǎng)景 --- **場(chǎng)景1. 當(dāng)一個(gè)空目錄想要被 git 追蹤,這個(gè)目錄中的內(nèi)容也需要被 git 跟蹤時(shí)** .gitkeep 文件內(nèi)容可有可無(wú),只是起到一個(gè)占位符的作用,使目錄能夠被 git 提交到遠(yuǎn)程庫(kù) 使用場(chǎng)景: 存放靜態(tài)資源的 static 目錄、thinkphp6 框架的 extend 目錄 ``` ├── extend │ └── .gitkeep ``` **場(chǎng)景2. 當(dāng)一個(gè)空目錄想要被 git 追蹤,這個(gè)目錄中的內(nèi)容不需要被 git 跟蹤時(shí)** 使用場(chǎng)景: thinkphp6 框架的 runtime 目錄 ``` └── runtime └── .gitignore ``` .gitignore 文件內(nèi)容 (忽略目錄下的所有內(nèi)容,但是不忽略 .gitignore): ``` * !.gitignore ```