用 git 保存空目錄


git 和 svn 不同,僅僅跟蹤文件的變動,不跟蹤目錄。Perforce 也是如此。所以,一個空目錄,如果裏面沒有文件,即便 git add 這個目錄,另外在別處 check out 的時候,是沒有這個空目錄的。

只跟蹤文件變化,不跟蹤目錄,這麼設計是有原因的。但這會帶來一些小麻煩。有時候,確實需要在代碼倉庫中保留某個空目錄。比如測試時需要用到的空目錄。

變通的解決辦法是在空目錄下存一個 .gitignore 文件。然後 git add 此目錄後,相當於跟蹤了 .gitignore 文件,產生的“副作用”就是這個“空”目錄也納入“跟蹤”,最終的效果是可以 check out 出一個看起來空空的目錄。如果有許多這樣的空目錄,可以用下面的命令自動補充 .gitignore 文件:

find . \( -type d -empty \) -and \( -not -regex ./\.git.* \) -exec touch {}/.gitignore \;

遞歸找尋當前目錄下,類型爲目錄,且爲空,也沒有 .git 開頭的文件,在其中用 touch 新建一個空的 .gitignore 文件。然後 git add . 之後即可。

如果這些特殊文件會對測試帶來干擾,那就只好在測試程序運行具體測試項目之前,先跑一段初始化目錄結構的代碼。另外可能還需要編寫負責清理的代碼。

git add -A和git add .和git add -u

git add -A 處理所有:添加、修改、刪除

git add . 處理添加和修改,不處理刪除

git add -u 處理修改和刪除,不處理新添加文件

說"git add -A"等於"git add ."加上git add -u"其實不準確,只能說功能上前面一個等於後面兩個,但它們使用的場景不同都有自己的作用。

發佈了42 篇原創文章 · 獲贊 69 · 訪問量 43萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章