如何管理两个相互关联的 GitHub 代码库?

4

仓库1(R1)是公开的,包含Ansible角色(如果你不知道Ansible,没关系,它基本上包含了代码)。

仓库2(R2)是私有的,包含Ansible playbooks(如果你不知道Ansible,playbooks基本上是从R1组合起来完成某些任务的角色)。

目前,R2(私有)作为子模块包含了R1(公开)。但是,我需要在R2(私有)上创建分支,这些分支实际上是特性分支。问题是,代码更改实际上需要在R1(公开)上进行,但我无法对R1(公开)进行分支。

我能否将R2(私有)作为R1(公开)的派生版本,然后使用pull请求将更改合并回R1(公开)? 我是否考虑到了更好的方法?

1个回答

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

4步:

从git 2.25(2020年第一季度)开始,git submodule 增加了 set-url 命令(请参见 VonC 的回答):

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接