2014-12-02 184 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