我有一個大約24MB的回購,但項目中的文件實際上只有2MB左右。我的印象是,帶有--depth 1的淺克隆會使我接近實際文件的2MB(無整個回購)。爲什麼這個git淺克隆比我預期的更大?
當我做淺層克隆時,新的回購僅顯示當前分支,但大小相同(24MB),並使用gitx查看回購,我可以看到整個歷史回溯到初始提交。
我想要一種方法來獲取文件的當前狀態(用於上傳到服務器)沒有所有的歷史。我做錯了什麼或者誤解了淺層克隆的目的?
我有一個大約24MB的回購,但項目中的文件實際上只有2MB左右。我的印象是,帶有--depth 1的淺克隆會使我接近實際文件的2MB(無整個回購)。爲什麼這個git淺克隆比我預期的更大?
當我做淺層克隆時,新的回購僅顯示當前分支,但大小相同(24MB),並使用gitx查看回購,我可以看到整個歷史回溯到初始提交。
我想要一種方法來獲取文件的當前狀態(用於上傳到服務器)沒有所有的歷史。我做錯了什麼或者誤解了淺層克隆的目的?
如果這是一個本地克隆,那麼克隆可能是操作通過將新存儲庫中的對象硬鏈接到舊存儲庫中的對象(它將其作爲本地文件系統的優化)。要看到,如果是這樣的話,你可以禁用硬鏈接:
git clone --depth 1 --no-hardlinks /path/to/repo.git
如果你只是想獲得文件的當前狀態,上傳到服務器,你應該使用git archive
生成一個ZIP或焦油你的樹的檔案。
--no-hardlinks選項似乎沒有什麼區別,但「git archive」是完美的。 謝謝 – kjs3 2010-01-02 23:18:42
正如在評論中所說,這很奇怪,因爲通常不可複製(見this thread)。命令
例,應該工作:
$ git clone --depth 1 git://github.com/rails/rails.git shallow
Initialized empty Git repository in /home/me/shallow/.git/
但無論如何,在大型回購協議,以淺克隆獲得的增益seems not very impressive
我建議這是因爲當做一個本地克隆,git忽略--depth
,因爲它有利於硬鏈接。您可以使用file:///home/user/path/to/repo
(即使用file:///前綴)指定源回購來強制您期望的行爲。
這是在文檔中。
你使用的是什麼版本的Git或msysgit?因爲這個線程(http://osdir.com/ml/git/2009-02/msg02816.html)說:沒有回購。 – VonC 2010-01-02 20:00:53
我在雪豹上使用1.6.5(來自二進制包)。 – kjs3 2010-01-02 20:12:20
克隆是本地btw。 – kjs3 2010-01-02 20:15:40