Git 不能提交空目錄?我也是醉了!

  • 2020 年 9 月 14 日
  • 筆記

Git 不能提交空目錄?我也是醉了!

背景

最近在提交文件時,因為是空的 Maven 項目結構,發現 Git 空目錄死活不能提交,還以為是我自己在 .gitignore 文件中忽略了,在網上查了下,原來還真有這回事。

如,用 git status 查看狀態:

$ git status
On branch master

No commits yet

nothing to commit (create/copy files and use "git add" to track)

空目錄無法被 git 感應。

解決方案

最主流的做法是,在空目錄下創建 .gitkeep 或者 .keep 空文件,或者 .gitignore 文件,這只是一個約定俗成的空目錄識別文件名,其實除了佔位識別空目錄,其他並沒什麼卵用。

我們再在空目錄中創建一個空文件:

touch .gitkeep

然後再用 git status 查看狀態:

$ git status
On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
	src/

nothing added to commit but untracked files present (use "git add" to track)

現在可以感應到 src 目錄了。

另外需要注意,在項目的 .gitignore 中不要忽略此文件。如果有需要,關注公眾號Java技術棧可以獲取一份推薦的 .gitignore 通用文件。

WHY

這種解決方案感覺有點扯淡,為什麼提交不了空目錄,一定要放個文件才行,放個不相干的文件感覺又有點扯淡。

於是抱著懷疑的態度再次查下資料,在下面這個鏈接我找到解釋:

//git.wiki.kernel.org/index.php/GitFaq#Can_I_add_empty_directories.3F

大概就是,Git 最初的設計是用來索引文件的,所以 Git 只關注文件,不關心文件,不關心目錄。

這是不是 Git 的設計問題呢?

最後,你是否有遇到這種蛋疼的問題?你還有其他解決方案嗎?歡迎留言分享~

後面我還會分享一些我平時用到的修改歷史記錄的實戰乾貨,比如怎麼修改歷史提交資訊、合併多次提交等,關注公眾號Java技術棧第一時間推送。

老鐵們,覺得有用,點個在看、轉發支援下哦!

近期熱文推薦:

1.免費獲取 IntelliJ IDEA 激活碼的 6 種方式!

2.我用 Java 8 寫了一段邏輯,同事直呼看不懂,你試試看。。

3.吊打 Tomcat ,Undertow 性能很炸!!

4.國人開源了一款超好用的 Redis 客戶端,真香!!

5.《Java開發手冊(嵩山版)》最新發布,速速下載!

覺得不錯,別忘了隨手點贊+轉發哦!