在存储库根目录上合并的git子树(w.git flow)

在存储库根目录上合并的git子树(w.git flow),git,git-flow,git-subtree,Git,Git Flow,Git Subtree,我们有一个基于git flow的存储库,其中我们在开发分支上添加了一个外部库作为子树(使用Atlassian SourceTree的git子树) Project/ Library/ X/ Y/ Z/ 后来,我们做了一个git flow发行版,将develop的更改合并到master(发行版) 问题是,在签出master时,库的内容被放在存储库的根上,而不是放在库中,就像它在合并过程中丢失了git子树前缀一样 Project/ X/ Y/ Z/ 知道出了

我们有一个基于git flow的存储库,其中我们在开发分支上添加了一个外部库作为子树(使用Atlassian SourceTree的git子树)

Project/
  Library/
    X/
    Y/
    Z/
后来,我们做了一个git flow发行版,将develop的更改合并到master(发行版)

问题是,在签出master时,库的内容被放在存储库的根上,而不是放在库中,就像它在合并过程中丢失了
git子树
前缀一样

Project/
  X/
  Y/
  Z/

知道出了什么问题吗?

子树本身在自己的分支上有自己的根目录。尤其见:

您希望将机架项目作为一个整体拉入主项目 子目录。您可以使用Git读取树在Git中实现这一点。你会学到的 更多关于阅读树和它的朋友在第9章,但现在知道 它将一个分支的根树读入当前暂存 区域和工作目录。你刚回到你的主人身边 分支,然后将rack分支拉入 主要项目的主分支:

$git读取树--前缀=机架/-u机架\分支


您确定它是子文件夹中的第一个吗?如果您从旧主控形状创建一个新分支并再次尝试整个操作,会发生什么情况?是否再次发生?是的。在开发中,分支位于子文件夹上。git流发布过程似乎没有保留子树指针。这有点愚蠢,但你的.git文件夹在哪里?你是如何“将外部库添加为子树”的?文件拷贝,git克隆,git子模块?我也有过同样的经历。使用git子树的步骤如文档所示
git远程添加$PROJECT\u NAME$git\u URI;git子树add--prefix=$PROJECT\u PATH$PROJECT\u NAME$PROJECT\u BRANCH
到目前为止还不错。然而,下一次我运行
git pull#(没有明确的远程或分支)
时,第二个远程回购的内容也被拉入了我的主项目根目录中。我怀疑这与git远程跟踪选项有关,因为任何远程设备都被认为是有效的对等设备,而且。。。他们都被拉了。我的git配置是
fetch=+refs/heads/*:refs/remotes/$PROJECT\u NAME/*
,我猜就是这样。这描述了子树合并策略,我使用的是git子树(请参阅)。