是否可以在维护父回购结构的同时创建git子树的分支?

是否可以在维护父回购结构的同时创建git子树的分支?,git,git-subtree,Git,Git Subtree,我们希望将子项目放在Git存储库中。repo,即ParentRepo,需要与我们的私有服务器同步,然后一些子目录还需要推送到公司github repo,并从上游github repo中提取。我们还需要能够从那些将被推送到github的子目录(而不是整个父repo)生成分支 因此,我们的层次结构类似于: ParentRepo/Dir1/GitHubProj1 ParentRepo/Dir1/GitHubProj2 ParentRepo/Dir1/PrivateProj GitHubProj1和

我们希望将子项目放在Git存储库中。repo,即ParentRepo,需要与我们的私有服务器同步,然后一些子目录还需要推送到公司github repo,并从上游github repo中提取。我们还需要能够从那些将被推送到github的子目录(而不是整个父repo)生成分支

因此,我们的层次结构类似于:

  • ParentRepo/Dir1/GitHubProj1
  • ParentRepo/Dir1/GitHubProj2
  • ParentRepo/Dir1/PrivateProj
GitHubProj1和GitHubProj2是社区github repos的分支。我们需要能够从社区github回购中获取上游变更,并从我们的github回购中获取分支。PrivateProj不会推动或拉动任何github回购。所有内容都会推送到我们的专用服务器上的ParentRepo

我们考虑过使用子模块,但似乎有很多关于它们的抱怨,所以我们决定尝试使用子树。我们使用公司github帐户URL创建子树,并为外部github帐户添加远程跟踪分支

但是,当我们尝试使用带有--branch选项的git subtree split命令创建子树的分支时,子树的内容放在父repo的根上


当我们创建每个子树的分支时,我们希望在父repo中保持其原始目录结构。除了使用特殊的命名法外,是否有任何方法可以以这种方式创建分支,或者以不同的方式设置我们的回购协议,以便实现这一点?

当您使用git子树拆分和分支时,它仅为子树创建分支。分支确实是父项目的一部分,因此切换到该分支可能会删除大量文件,然后在向后移动时重建这些文件,这有点烦人

最好的选择可能是在本地克隆github repo(在ParentRepo路径之外的某个地方)并选择分支。然后,您可以返回到简单的push和pull子树命令,直接到本地副本,然后从那里向上推到github


这实际上与您使用split时所做的相同,但只需一步,您就不必在拆分后交换到临时分支,然后将其合并到某个地方,交换回原始分支并删除临时分支。

我希望这不会让您感到困惑:p如果对您有用的话,我将向tortoisegit添加子树。