2009-11-19 77 views
22

所以我看到Git無法識別文件夾,或者我應該說當提交之間的唯一更改是將空文件夾添加到工作樹時,它們不會在git add .之後顯示在git status中。git和空文件夾

如何處理將空文件夾添加到工作樹(用於運行時存儲)的需求,並在其他存儲庫從當前存儲庫(其中添加了文件夾的存儲庫)中取出時反映/創建它們?

+2

可能的重複[如何將一個空目錄添加到git存儲庫](http://stackoverflow.com/questions/115983/how-do-i-add-an-empty-directory-toa-a- git-repository) – interjay 2011-07-03 18:59:12

+0

我已經在這裏做了一個關於這個的小博客文章http://www.developertipoftheday.com/2011/07/empty-folders-in-git-mecurial.html可能有幫助。 – 2011-08-15 12:47:12

回答

21

人們常把一個空文件作爲佔位符的文件夾中,以克服限制......

+13

個人我想讓它成爲自述文件,並附上一些簡要說明文件夾存在的原因 – 2009-11-20 09:02:04

+0

@jk。或者在需要時創建目錄。當目錄不存在時,你的shell腳本或構建工具就不會死掉。 – 2013-07-22 17:07:08

+1

@omouse實際上這通常是一個解決bug的構建或部署工具/腳本的解決方法 – 2013-07-22 17:53:42

6

你是絕對正確的。像其他一些版本控制系統一樣,Git不會考慮空文件夾或文件夾屬性。只有存在文件的文件夾才存在。如果你想模擬這個,你需要放置佔位符文件到它們中。

42

我通常會在這些目錄中放置一個.gitignore,因爲無論如何您可能會忽略任何運行時生成的數據。

+7

另一個約定是在目錄中放置一個名爲「.gitkeep」的文件。請參閱:http://stackoverflow.com/questions/7229885/gitignore-vs-gitkeep – 2012-12-22 17:02:02

3

要麼將​​空的佔位符文件放入您想要跟蹤的文件夾中,要麼添加說明以在可能的情況下將這些文件夾創建到您的構建系統。

4

您應該意識到您正在要求您的源代碼管理系統設置一些非源代碼的資源,這些資源不是您的構建系統的一部分,但是對於您的應用程序的運行至關重要。我會執行以下操作之一:

  1. 使構建創建必要的目錄。
  2. 讓應用程序在運行時創建所需的目錄。

同樣,如果應用程序想附加到日誌文件,那麼在修訂控制系統中啓動該日誌文件是沒有意義的,是嗎?

-3

我在嘗試將git用作支持重複數據刪除和壓縮的備份工具時遇到了此問題。

我的解決方案是創建我自己的系統。它可在http://github.com/meingbg/store

再次,我的目的是存儲文件,而不是代碼工作。

+0

爲什麼你不使用rsync? – 2013-07-22 17:07:24

+0

@omouse:rsync不會跟蹤更改。 meingbg可能對git-annex感興趣,git-annex是一個基於git的解決方案,可以跟蹤文件的變化。 – sleblanc 2016-02-04 16:54:40

0

我也面臨同樣的問題。我認爲這與Git跟蹤更改的方式有關。它不跟蹤文件,而是跟蹤其內容。在顯示更改,提交或日誌時,它會將更改映射到特定文件並顯示單個文件中的更改。看到這個視頻的更多細節Tech Talk: Linus Torvalds on git Linus特別提供了一個關於如何將函數從一個文件移動到另一個文件以及git如何跟蹤這個改變的例子。

6

我通常在這些文件夾中放置了空的.gitkeep