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

Java技術(shù)棧
www.javastack.cn
關(guān)注閱讀更多優(yōu)質(zhì)文章
Git 不能提交空目錄?我也是醉了!
背景
最近在提交文件時(shí),因?yàn)槭强盏?Maven 項(xiàng)目結(jié)構(gòu),發(fā)現(xiàn) Git 空目錄死活不能提交,還以為是我自己在 .gitignore 文件中忽略了,在網(wǎng)上查了下,原來(lái)還真有這回事。
如,用 git status 查看狀態(tài):
$?git?status
On?branch?master
No?commits?yet
nothing?to?commit?(create/copy?files?and?use?"git?add"?to?track)
空目錄無(wú)法被 git 感應(yīng)。
解決方案
最主流的做法是,在空目錄下創(chuàng)建 .gitkeep 或者 .keep 空文件,或者 .gitignore 文件,這只是一個(gè)約定俗成的空目錄識(shí)別文件名,其實(shí)除了占位識(shí)別空目錄,其他并沒什么卵用。
我們?cè)僭诳漳夸浿袆?chuàng)建一個(gè)空文件:
touch?.gitkeep
然后再用 git status 查看狀態(tài):
$?git?status
On?branch?master
No?commits?yet
Untracked?files:
??(use?"git?add?..." ?to?include?in?what?will?be?committed)
?src/
nothing?added?to?commit?but?untracked?files?present?(use?"git?add"?to?track)
現(xiàn)在可以感應(yīng)到 src 目錄了。
另外需要注意,在項(xiàng)目的 .gitignore 中不要忽略此文件。如果有需要,關(guān)注公眾號(hào)Java技術(shù)棧可以獲取一份推薦的 .gitignore 通用文件。
WHY
這種解決方案感覺有點(diǎn)扯淡,為什么提交不了空目錄,一定要放個(gè)文件才行,放個(gè)不相干的文件感覺又有點(diǎn)扯淡。
于是抱著懷疑的態(tài)度再次查下資料,在下面這個(gè)鏈接我找到解釋:
https://git.wiki.kernel.org/index.php/GitFaq#Can_I_add_empty_directories.3F

大概就是,Git 最初的設(shè)計(jì)是用來(lái)索引文件的,所以 Git 只關(guān)注文件,不關(guān)心文件,不關(guān)心目錄。
這是不是 Git 的設(shè)計(jì)問(wèn)題呢?
最后,你是否有遇到這種蛋疼的問(wèn)題?你還有其他解決方案嗎?歡迎留言分享~
后面我還會(huì)分享一些我平時(shí)用到的修改歷史記錄的實(shí)戰(zhàn)干貨,比如怎么修改歷史提交信息、合并多次提交等,關(guān)注公眾號(hào)Java技術(shù)棧第一時(shí)間推送。
老鐵們,覺得有用,點(diǎn)個(gè)在看、轉(zhuǎn)發(fā)支持下哦!





關(guān)注Java技術(shù)棧看更多干貨


