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


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

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

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

https://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開發手冊(嵩山版)》最新發布,速速下載!

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM