2012-07-03 157 views
2

我已經在這裏搜索過,但在這裏沒有任何東西可以回答我的問題。 我對目前的文件夾結構一個Git倉庫將子目錄拆分成子模塊

/app/folder/ 
    /app/folder2/.. 
    /app/bundles/bundle1 
    /app/bundles/bundle2 

我想轉成捆捆每到自己的子模塊,使所有的版本控制歷史記錄在包中的代碼,保持目錄佈局一模一樣。原因是我有另一個應用程序,我想使用一些捆綁。

我了個去,在使用

git filter-branch --subdirectory-filter bundles/client -- --all 

但是,這不是做正確的事....

任何幫助將不勝感激。

回答

0

實際上,使用--subdirectory-filter正是要做的事情,甚至在filter-branch manpage的例子中給出。當然,它會用當前活動的分支替換一個新分支,包含操作的結果。原始分支(指向它的指針)通常保存在「refs/original /」中(請參閱聯機幫助頁中的--original選項)。 可以複製活躍的分支別的地方:

git branch bundles/client 

和恢復當前分支

git reset --hard original/refs/heads/oldbranchname 

您可將當前分支比導出爲一個包,或直接在子模塊把它拿來和刪除來自父庫的引用。

如果使用了filter分支的--all選項,則所有分支都會遭受活動分支的命運,因此您必須重複每個分支的複製操作。

不幸的是,你不能把輸出分支名稱給filter-branch命令。可能值得在Git郵件列表上提出建議。

+0

謝謝fork0。你介意我多挑一點你的大腦嗎?那麼運行該命令後我所擁有的僅僅是我的存儲庫中的bundle/client?然後,我需要將剩下的部分分支到新的分支中,並將該新分支轉換爲子模塊。然後我重置舊的分支,我想刪除/ app/bundles/client /然後在其位置導入子模塊?嗯不是一個真正的問題,對不起! ;)更多的腦轉儲需要澄清;)再次感謝,艾倫 –

+0

不客氣!只需要小心刪除東西,然後再製作它們的副本:) – fork0