2

我有一个依赖于 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”进行构建如果我不想生活在最前沿。
4

1 回答 1

0

这取决于 3rd 方库如何接受拉取或补丁。有些人会接受来自直接分叉的拉取请求,而其他人会要求您使用分支。还有一些人可能不接受拉取请求,并要求补丁来自其他来源。

除了将补丁返回给第 3 方的细节之外,您似乎正走在获得最大灵活性的正确道路上。

于 2012-05-14T18:57:54.330 回答