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 寫了一段邏輯,同事直呼看不懂,你試試看。。
覺得不錯,別忘了隨手點贊+轉發哦!