2013-10-25 77 views
0

我想下面的目錄結構承諾的git:如何提交沒有文件的目錄結構(具有子目錄的目錄)git?

web 
    /uploads 
      /avatars 
      /video 

我把.gitkeep/web/uploads/avatars//web/uploads/video/,並添加以下行.gitignore在回購的根:

/web/uploads/ 
!/web/uploads/avatars/.gitkeep 
!/web/uploads/video/.gitkeep 

git status不顯示任何新文件。調用git add web/uploads/avatars/.gitkeep輸出以下消息:

The following paths are ignored by one of your .gitignore files: 
web/uploads/avatars/.gitkeep 
Use -f if you really want to add them. 
fatal: no files added 

我怎麼能犯的一個空目錄結構到git倉庫? P.S. git版本是git版本1.8.4.msysgit.0

+0

這是(因爲你想要的最低級別的目錄是空的,這個問題後來乾脆上浮到每一個新的水平)的副本[如何添加一個空目錄到一個git倉庫](http://stackoverflow.com/q/115983/1256452)(或者,也許,[Make .gitignore忽略除幾個文件以外的所有內容](http://stackoverflow.com/q/987142/ 1256452))。 – torek

回答

1

如果您排除某個目錄,則其下的所有內容都將被排除,即使您稍後將其中的某些內容取消管理。要對某些文件或目錄進行統一管理,您必須取消管理任何您想要統一管理的任何目錄的父目錄。所以,你的.gitconfig必須

!web/uploads/ 

web/uploads/* 
!web/uploads/avatars/ 
!web/uploads/video/ 

web/uploads/avatars/* 
web/uploads/video/* 

!web/uploads/*/.gitkeep 

但是你應該記住,.gitkeep不是git的功能,它只是一個協議,只要它是一個隱藏文件,所以名稱可以是任何

0

您的.gitignore文件忽略目錄/web/uploads本身,因此它的子目錄和文件將被自動忽略,無論以下否定模式如何。

如果你想添加/web/uploads/但忽視它的文件中,.gitignore可以像:

/web/uploads/* 
# Next line tell git to add subdirectories back 
!/web/uploads/**/ 
!/web/uploads/avatars/.gitkeep 
!/web/uploads/video/.gitkeep 

或者,如果你只是想添加的目錄,無論是否是文件或否定的,那麼你不不需要觸摸.gitignore,只需添加.gitkeep文件,一切都會正常工作。

0

如果您忽略一個目錄,git不檢查它的子目錄和文件。

因此,git不檢查以下行。

!/web/uploads/avatars/.gitkeep 
!/web/uploads/video/.gitkeep 

如果你想git的檢查子目錄和文件,使用星號和忽略所有文件(而不是目錄)。

例如:

/web/uploads/*/* 
相關問題