我有一个依赖于 github 上托管的第 3 方开源项目的应用程序(我们称之为“https://github.com/3rd-party-org/3rd-party-lib”。这个项目有一个“master”分支和多个特定于版本的分支(例如“xy”、“xz”)。
我希望能够偶尔向开源项目提交修复,同时在我的开发机器上维护本地分支(a)与第 3 方项目的分支保持同步,并且(b)包含我的修复,包括那些我还没有提交到第 3 方项目,以及我已经提交但尚未被接受和合并的那些(也许永远不会,但我需要这些更改以供我自己使用)。
我对 git 很陌生,我想在这里正确地下车。
这就是我的想法,请告知这是否有意义或是否有更好的选择。
作为初始设置:
- 将“https://github.com/3rd-party-org/3rd-party-lib”克隆到我的本地开发环境
- 在我的本地仓库中,从每个第 3 方定义的分支创建分支,例如从“master”分支“my-master”,从“xy”分支“my-xy”等。
- 在 github 上 fork 3rd 方 repo(例如到“https://github.com/me/3rd-party-lib”),所以我有一个地方来推送修复,并且我可以从中向 3rd 发送拉取请求库维护者。
当我想修复第 3 方项目时,我会(在我的本地开发环境中):
- 通过从 origin/master 拉取确保“master”是最新的
- 将“master”合并为“my-master”
- 从“master”创建一个主题分支(例如“issue-123”)
- 准备好后,将我的主题分支推送到我在 github 上的分叉存储库,并向 3rd 方项目提交拉取请求
- 回到我的本地环境中,将我的主题分支合并到“my-master”中,以便在针对“my-master”构建我的依赖项目时,我会看到我的所有修复。
- 如果适用,通过从“my-master”中挑选它们将我的修复反向移植到“my-xy”或“my-xz”分支,这样我就可以针对特定版本的库而不是“my-master”进行构建如果我不想生活在最前沿。