1. 程式人生 > 實用技巧 >git 新增根目錄(轉)

git 新增根目錄(轉)

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

只跟蹤檔案變化,不跟蹤目錄,這麼設計是有原因的。但這會帶來一些小麻煩。有時候,確實需要在程式碼倉庫中保留某個空目錄。比如測試時需要用到的空目錄。下面來看看如何解決。

其實這裡有兩種情況:

一、目錄是空的

這種情況下只需要在目錄下建立.gitkeep檔案,然後在專案的.gitignore中設定不忽略.gitkeep

.gitkeep 是一個約定俗成的檔名並不會帶有特殊規則

二、目錄中已經存在檔案

那就需要首先在根目錄中設定!.gitignore

,然後在目標目錄也建立一個.gitignore檔案,並在檔案中設定

?
1 2 * !.gitignore

小結

好了,這樣就可以在專案中提交空目錄了,希望對大家的學習或者工作能有所幫助,如果有疑問大家可以留言交流。

在git中如果想忽略掉某個檔案,不讓這個檔案提交到版本庫中,可以使用修改根目錄中 .gitignore 檔案的方法(如無,則需自己手工建立此檔案)。這個檔案每一行儲存了一個匹配的規則例如:

?
1 2 3 4 5 6 7 # 此為註釋 – 將被 Git 忽略 *.a # 忽略所有 .a 結尾的檔案 !lib.a # 但 lib.a 除外
/TODO # 僅僅忽略專案根目錄下的 TODO 檔案,不包括 subdir/TODO build/ # 忽略 build/ 目錄下的所有檔案 doc/*.txt # 會忽略 doc/notes.txt 但不包括 doc/server/arch.txt

規則很簡單,不做過多解釋,但是有時候在專案開發過程中,突然心血來潮想把某些目錄或檔案加入忽略規則,按照上述方法定義後發現並未生效,原因是.gitignore只能忽略那些原來沒有被track的檔案,如果某些檔案已經被納入了版本管理中,則修改.gitignore是無效的。那麼解決方法就是先把本地快取刪除(改變成未track狀態),然後再提交:

?
1 2 3 git rm -r--cached. gitadd. gitcommit-m 'update.gitignore'

1、剛建立專案時我們為了保證專案結構完整,要提交空的資料夾 , 但是git預設是忽略空目錄的。

這時候我們只需要在git 根目錄下執行

find . -type d -empty -exec touch {}/.gitignore \;

就可以上傳空的檔案夾了,本質上是在空目錄裡建立了一個.gitignore檔案,等資料夾中新建了檔案再把它刪掉即可。

2、在頂層目錄中的.gitignore中新增以下內容:

# Ignore everything in this directory

*

# Except this file

!.gitignore