【问题标题】:Is it possible to create branches of git subtrees while maintaining parent repo structure?是否可以在保持父仓库结构的同时创建 git 子树的分支?
【发布时间】:2013-06-26 23:49:15
【问题描述】:

我们希望将子项目放入 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 以使这成为可能?

【问题讨论】:

    标签: git git-subtree


    【解决方案1】:

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

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

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

    【讨论】:

    • 我希望这不会让人感到困惑:P 如果这对你有任何用处,我将向 tortoisegit 添加子树。
    猜你喜欢
    • 2017-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-31
    • 1970-01-01
    • 2019-06-19
    相关资源
    最近更新 更多