【问题标题】:git: manage multiple remotes in a submodulegit:在一个子模块中管理多个遥控器
【发布时间】:2016-09-24 12:06:48
【问题描述】:

我的团队在我们的主项目中使用一个公开可用的 github 托管项目作为子模块。我们希望针对该项目管理我们自己的补丁,而不向上游推送,但是除非我们有一个镜像来推送我们的私有分支,否则我们无法共享这些补丁。

假设我们有镜像,我们的子模块需要两个遥控器:一个是我们从中获取上游更改的地方,另一个是我们推送与补丁分支合并的地方。我们如何使用子模块(或超级项目)存储有关遥控器的信息,以便团队的每个成员都可以轻松地执行上游更新,而无需 git add remote upstream ...github...project.git

我们打算通过编写一个 shell 脚本来自动化这个过程和一个用于存储上游远程的文件来解决这个问题,但是有 git 方式这样做吗?

可能相关,但我没有找到合适的解决方案:git add remote in submodule

【问题讨论】:

  • 链接的问题是关于通过相对URL管理不同结帐中的不同遥控器,这与我的问题无关。我希望在每次结帐父 repo 时为每个子模块管理两个遥控器,自动。我自己的回答提供了我们当前的方法,它不是自动的。

标签: git git-submodules git-remote


【解决方案1】:

目前的ansatz是这样的:

  • 对于每个需要按上述方式管理的子模块,都有一个submodule/.gitupstream文件存储url
  • 使用简单的 shell 脚本:
    • 从这个文件更新子模块的上游远程
    • git 获取上游
    • git checkout known submodule patch branch (可能来自.gitmodules submodule..branch)
    • git 合并上游/主(或任何参考规范)

然后手动:

  • git push origin(包含我们补丁分支的镜像)
  • 提交更改的子模块并推送到超级项目中

我希望看到一个更好的,可能是 git 内置的解决方案。

【讨论】:

    猜你喜欢
    • 2020-01-04
    • 2016-11-08
    • 1970-01-01
    • 2012-01-06
    • 2017-08-18
    • 1970-01-01
    • 1970-01-01
    • 2014-12-09
    • 2020-08-05
    相关资源
    最近更新 更多