我们希望将子项目放在 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 以便这是可能的?