问题描述
存储库1(R1)是公共的,包含Ansible角色(如果您不知道Ansible,那很好,它基本上包含代码)。
存储库2(R2)是私有的,其中包含Ansible剧本(如果您不知道Ansible,则这些剧本基本上是R1中角色的组合,可以完成某些工作)。
现在,R2(专用)具有R1(公用)作为子模块。但是,我需要能够在R2(私有)上创建本质上是功能分支的分支。问题是代码更改实际上需要在R1(公共)上进行,但我不能分支R1(公共)。
我可以使R2(私有)成为R1(公共)的分支,然后使用拉取请求将更改合并回R1(公共)吗?有没有我没有考虑的更好的方法?
解决方法
您可以:
- 叉
R1
(到R1fork
) - 在
R1fork
中添加所需的功能 - 在
R1
上打开PR,要求将您添加的内容集成到R1fork
- 在
R2
中,将R1fork
用作子模块的远程 - 如果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 Nagaraj和Jim 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