2014-12-02 186 views
14

我們有一個倉庫,基於git-flow,我們在開發分支上添加了一個外部庫作爲子樹(使用Atlassian SourceTree的git子樹)。git subtree合併到倉庫的根目錄(w。git-flow)

Project/ 
    Library/ 
    X/ 
    Y/ 
    Z/ 

後來我們做了一個git flow release,將發展的變化合併爲主(發佈)。

問題是,當檢出主庫時,庫的內容被置於庫的根目錄而不是庫內,就像它在合併期間丟失了git subtree前綴。

Project/ 
    X/ 
    Y/ 
    Z/ 

任何想法出了什麼問題?

+0

你確定它是第一個在子文件夾中?如果你從老主人手中創建一個新的分支並再次嘗試整個事情,會發生什麼?它會再次發生嗎? – iberbeu 2014-12-09 17:05:27

+0

是的。在開發分支是在一個子文件夾。這是git-flow發佈過程,似乎沒有保留子樹指針。 – 2014-12-10 17:16:32

+2

排序一個愚蠢的問題,但你的.git文件夾位於何處? – 2014-12-16 01:34:16

回答

1

子樹本身在它自己的分支上有它自己的根目錄。請參閱http://git-scm.com/book/en/v1/Git-Tools-Subtree-Merging,特別是:

您要將Rack項目作爲 子目錄拖入主項目中。你可以在Git中使用git讀取樹來實現。您將在第9章學習更多關於讀取樹及其朋友的 ,但現在知道 它將一個分支的根樹讀入您當前的分區 區域和工作目錄。你只要切換回你的主人 分支,你拉架子支到您的主項目的 master分支的rack子目錄:

$的git讀樹前綴=機架/ -u rack_branch

+0

這描述了子樹合併策略,我使用的是git-subtree(請參閱https://github.com/git/git/blob/master/contrib/subtree/git-subtree.txt)。 – 2014-12-16 16:58:54