2014-05-17 91 views
1

我在當前回購庫中有一個名爲的文件夾我想將其提取到外部回購庫,然後在我的主項目中作爲子樹引用。我怎麼能做到這一點,而不失去我的主要回購協議中的文件的歷史記錄,但尚未建立此子樹連接?如何將目錄及其文件移動到子樹遠程回購

main_project.git < --- files.git

root 
---data 
------files 

舉動

root 
---remote 
------files (subtree) 

回答

0

使用git filter-branch --subdirectory-filter以提取單個文件夾到一個單獨的存儲庫:

--subdirectory-filter <directory> 
     Only look at the history which touches the given subdirectory. The result 
     will contain that directory (and only that) as its project root. 

之後你可以使用git submodulegit subtree將新的存儲庫包含到第二個存儲庫中。

+0

嗨michas,如果我理解正確,這個過濾器分支將從我的主要repo完全刪除此子目錄的所有歷史記錄,以便我可以重新導入它作爲子樹是否正確?這不是我想要的不幸,因爲我想維護我的主庫中的文件的歷史記錄,即使它們現在將成爲不同位置的子樹的一部分,這是否有意義? – user391986

+0

'git filter-branch'會保存歷史記錄。 '子目錄過濾器'只會「移除」給定目錄之外的所有內容。只需對您的存儲庫進行全新的克隆,並親自查看它。 – michas

相關問題