2011-03-24 143 views

回答

5

您可以克隆它,然後在克隆上應用一個過濾器分支,以便拆分存儲器,只提取您想要的目錄(具有完整的歷史記錄)。

Detach subdirectory into separate Git repository

注意在克隆步驟中使用的git clone --no-hardlinks /XYZ /ABC

--no-hardlinks開關使克隆的本地存儲庫時混帳使用真正的文件副本,而不是hardlinking的。

-1

你可以克隆它並保存你想要的文件;歷史將被保留下來。

2

假設您只想保留子目錄作爲一個單獨的項目:您可以使用git filter-branch

  1. 創建一個新的分支
  2. 定義「樹過濾器」重新排列已簽出副本,你想要的方式,最好是作爲一個單獨的腳本
  3. 運行git filter-branch --tree-filter=/path/to/script thebranch

您現在有一個與正常開發流無關的獨立分支,僅包含子目錄。無論如何克隆新分支只獲取子項目歷史記錄。

+1

您不需要在此處定義(自定義)樹形過濾器。內置的子目錄過濾器正是如此,正如在[VonC的答案]中鏈接到的答案中所述(http://stackoverflow.com/questions/5421386/how-do-i-create-a-new-git-repository -from-A-夾合的存在-git的存儲庫/ 5421581#5421581)。您也不希望在同一個回購中的新分支上執行此操作,而是在單獨的克隆中執行此操作。如果回購包含分立分支上的子目錄和完整項目,則初始克隆將獲取兩者,爲每個分支創建遠程跟蹤分支。浪費了! – Cascabel 2011-03-24 15:30:15

相關問題