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