3

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

所以我们的层次结构是这样的:

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

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

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

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

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

4

1 回答 1

0

当您使用 git subtree split and branch 时,它只会为子树创建该分支。确实,分支是父项目的一部分,因此切换到该分支可能最终会删除大量文件,然后在移回时重新构建它们,这有点烦人。

您最好的选择可能是在本地克隆 github 存储库(在 ParentRepo 路径之外的某个位置)并可选择分支。然后,您可以使用简单的 push 和 pull 子树命令,直接到您的本地副本,然后从那里推送到 github。

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

于 2014-03-06T07:49:24.013 回答