2010-10-06 81 views
1

對於我的學校項目,我曾經有過一個大回購項目,其中有幾個具體項目的子目錄。因爲我沒有時間,所以我總是向master分支投入任何東西。如何將自動分割提交到不同的分支?

問題是,事實證明這是不可行的,因爲恢復較舊的提交或確定哪些提交屬於不閱讀消息的提交變得越來越困難。

目前,它看起來像這樣:

導演樹:

projects/ 
    projectA/ 
    projectB/ 
    projectC/ 
    ... 

回購:

A---B---C---D---E---F---G<master> 

我發現,幾乎所有的從大約五犯(與衆不同之處,我可以用手修復)只需修改其中一個文件夾中的文件即可。

是否有一個簡單的(自動??)方式(腳本?),它會自動分配提交到項目和創建不同分支的痛苦工作?我想有這樣的事情在最後:

回購:

A---C---G<project A> 
|\ 
| \ 
| \ 
| B---D<project B> 
E---F<project C> 

回答

1

您使用的是--subdirectory-filter選項尋找git filter-branch

爲所需的三個項目創建三個分支,然後在這些分支中運行git filter-branch --subdirectory-filter projectX應爲您提供期望的結果。

您可能還想考慮只爲每個項目使用一個存儲庫。完成上述操作後,創建新的存儲庫(每個存儲庫都包含您之前創建的其中一個分支作爲其主服務器)將變得微不足道。

+0

可以請你解釋一位沒有經驗的用戶如何分解成不同的回購細節? – fuz 2010-10-06 05:52:54

+0

想要更詳細的回答,請隨時提出一個新問題,但基本想法是使用'git init'創建3個新的存儲庫,從包含每個目錄的分支的存儲庫獲取所有對象,然後將每個新存儲庫的主設置爲相應分支中的任何內容。之後,您可以刪除每個項目存儲庫中的其他分支,並且可能還會指示git刪除所有引用對其他項目的提交的對象,而這些對象現在無法從新的回購站主服務器訪問。 – rafl 2010-10-06 06:05:11

相關問題