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

时间:2013-06-26 23:49:15

标签: git git-subtree

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

所以我们的层次结构就像:

  • ParentRepo / Dir1 / GitHubProj1
  • ParentRepo / Dir1中/ GitHubProj2
  • ParentRepo / Dir1中/ PrivateProj

GitHubProj1和GitHubProj2是来自社区github repos的分支。我们需要能够从社区github repos中获取上游更改并从我们的github repos中获取分支。 PrivateProj不会从任何github存储库中推送或拉出。一切都被推送到我们的私人服务器上的ParentRepo。

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

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

当我们创建每个子树的分支时,我们希望在父repo中维护其原始目录结构。除了使用特殊的命名法,有没有办法以这种方式建立分支或以不同的方式设置我们的回购,这是可能的?

1 个答案:

答案 0 :(得分:0)

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

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

这实际上是和你用split做的一样,但是在一步中你不必在拆分后交换到temp-branch,然后在某处合并,交换回原始分支并删除临时分支。