2013-02-26 129 views
0

我Centos5機器上工作,其中i使用命令哪裏Git進程存儲文件

$ mkdir test_repo.git 
$ cd test_repo.git 
$ git --bare init 

它包含唯一的Git的元數據創建的空純倉庫。然後我就開始Git進程同系統內的局域網使用命令

$ git daemon --reuseaddr --base-path=/data/test_work/ --export-all --verbose --enable=receive-pack 

從另一臺機器我克隆是空repositry添加一些文件提交,並推動使用命令

$ git clone git://<system_ip where git dameon run>/test_repo.git 

附加掌握並提交了一些文件在它和推git

$ git push origin master 

然後我從另一臺機器克隆它運作良好我得到所有我推的變化。

但是當我在運行git-daemon的機器上看到實際的test_repo.git時。它只包含保存我提交的文件的git-meta數據?

請告訴我我的實際數據保存爲git-daemon和裸回購的位置?它是在我的機器上還是在其他位置?

回答

1

Git通常使用.git目錄來存儲元數據。如果在工作目錄中刪除除此目錄以外的所有內容,仍然可以使用git checkout重新提交已提交的文件。

您創建了所謂的裸倉庫(選件--bare)。它只包含.git元數據。它並不意味着用於直接工作,所以這些文件只會浪費存儲空間,更新這些文件無論如何都會有人更新存儲庫。無論如何,如果我們收到多個不同分支的提交,我們應該檢查哪個分支!?!提交和其他git對象專門存儲在objects/子目錄下,從你的提交SHA1的第一個字母開始(例如,你可以在目錄objects/ff/ee0ccd6cce082784d515a6321a7afbfdc0dde0中找到帶有SHA1 ffee0ccd6cce082784d515a6321a7afbfdc0dde0的git對象)或objects/pack/打包格式的目錄(幾個對象放入相同的高度壓縮文件以節省存儲空間)。

所有內容都存儲在您提交的裸露目錄中。沒有什麼東西會被推到網絡上某個神祕的祕密位置,除非你這麼說(然後這個位置並不是祕密的,而是根據你在命令行中說的話,使用直接URL或配置的遠程名稱origin自動定義爲存儲庫你最初克隆)。

1

文件存儲在Git對象存儲中,並且如果它是裸回購,則不可見,因爲它是。他們沒有簽出,沒有工作副本,只有數據元數據,以二進制格式保存,以節省空間和增加速度。

真實數據在objects/pack目錄中。

欲瞭解更多信息,請參閱How git stores your data