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