如何管理两个链接的GitHub存储库

问题描述

存储库1(R1)是公共的,包含Ansible角色(如果您不知道Ansible,那很好,它基本上包含代码)。

存储库2(R2)是私有的,其中包含Ansible剧本(如果您不知道Ansible,则这些剧本基本上是R1中角色的组合,可以完成某些工作)。

现在,R2(专用)具有R1(公用)作为子模块。但是,我需要能够在R2(私有)上创建本质上是功能分支的分支。问题是代码更改实际上需要在R1(公共)上进行,但我不能分支R1(公共)。

我可以使R2(私有)成为R1(公共)的分支,然后使用拉取请求将更改合并回R1(公共)吗?有没有我没有考虑的更好的方法

解决方法

您可以:

  1. R1(到R1fork
  2. R1fork中添加所需的功能
  3. R1上打开PR,要求将您添加的内容集成到R1fork
  4. R2中,将R1fork用作子模块的远程
  5. 如果PR被接受:您可以远程切换回R1

对于步骤4.

从git 2.25(2020年第一季度)开始,git submodule获得了set-url命令(see this VonC's answer):

git submodule set-url [--] <path> <newurl>

如果由于某些原因您无法更新所使用的git,则在旧版本的git上,您将不得不编辑.gitmodules文件(例如,请参见以下两个答案)由Pavan Sokke NagarajJim Puls来创建):

# edit your .gitmodules file : set correct 'url = ...' and 'branch = ...' to
#    R1fork's url and the target branch you wish to include

# then run 'sync' and 'update' :
git submodule sync --recursive
git submodule update --remote --recursive