2015-04-28 30 views

回答

2

不,因爲底層存儲庫由所有這些單獨的工作目錄共享,並且git gc在底層存儲庫上運行。

這裏有一個額外的(小的但真實的)危險。運行git gc時,它會清理和壓縮存儲庫對象,並放棄那些未引用的對象。某些參考文獻可能僅在索引中,或者僅在HEAD(處於「分離的HEAD」模式下)。但請注意,在git-new-workdir的說明中,部分說明如下:

它只是爲您設置一個新的工作目錄(帶有自己的索引)。

參考隱藏在其他一些指標,即,這不是一個與見過任何索引工作DIR-是不可見的git gc,使它們符合刪除。

大多數情況下,這不會成爲一個問題,因爲git gc運行git prune具有未引用對象的默認到期時間(即2周)。只有索引參考文件是在git add文件中出現,但不包含git commit結果,因此如果您至少在兩週內未將文件提交至git add,那麼這些明顯陳舊的參考文件將會消失......並且您始終可以修復問題git add - 根據需要再次生成文件。

使用分離的HEAD創建匿名分支時會出現更隱蔽的版本。您鏈接的頁面沒有提及它,但new-workdir腳本沒有(也不能)在單獨的「新工作目錄」中維護這些分離的HEAD(這些新目錄中的每個目錄都有其自己的.git目錄以及它自己的HEAD參考) 。如果git gc在其他工作目錄中運行,則可能會從基礎存儲庫中丟棄兩週或更多周的舊分離提交鏈。

由於腳本共享「更深」的引用(包括分支和標籤),這對於「真實」分支和標籤不是問題。也就是說,在一個工作目錄中更新分支X會更新所有其他工作目錄中的分支X,以便無法丟失參考。

總之(太晚了:-))如果你不把HEAD分離超過一個星期,你就相當安全。

2

不,這沒有意義。運行一次。

git gc不會修改工作目錄中的任何內容。它只有修改.git目錄中的內容。 git-new-workdir的整個點是在多個工作目錄之間共享一個.git,所以從兩個不同的工作目錄運行git gc與從相同目錄運行兩次是相同的;也就是說,這是毫無意義的。

相關問題