如何设置git repos和分支机构为第三方项目做贡献?

时间:2012-05-14 18:32:29

标签: git github

我的应用程序依赖于github上托管的第三方开源项目(我们称之为“https://github.com/3rd-party-org/3rd-party-lib”。此项目有一个“掌握“分支和多个特定于版本的分支(例如”xy“,”xz“)。

我希望能够偶尔向开源项目提交修复程序,同时在我的开发机器上维护本地分支机构(a)与第三方项目的分支机构保持同步,以及(b)包含我的修复程序,包括我尚未提交给第三方项目的那些,以及我已提交但尚未被接受和合并的那些(可能永远不会,但我仍然需要这些更改供我自己使用)。

我对git很新,我想在这里右脚站起来。

以下是我的想法,请告知这是否有意义或是否有更好的选择。

作为初步设置:

  • 克隆“https://github.com/3rd-party-org/3rd-party-lib”到我当地的开发环境
  • 在我的本地仓库中,在每个第三方定义的分支上创建分支,例如从“大师”分支“my-master”,从“x.y”分支“my-x.y”等。
  • 在github上分叉第三方回购(例如,到“https://github.com/me/3rd-party-lib”),所以我有一个推送修复的地方,我可以从中发送拉请求第三方lib维护者。

当我想修复第三方项目时,我会(在我当地的开发环境中):

  • 通过从origin / master
  • 拉出来确保“master”是最新的
  • 将“master”合并为“my-master”
  • 创建“master”主题分支(例如“issue-123”)
  • 准备好后,将我的主题分支推送到github上的forked repo,并向第三方项目提交拉取请求
  • 回到我的本地环境中,将我的主题分支合并到“my-master”中,以便在针对“my-master”构建我的依赖项目时,我会看到所有修复。
  • 如果适用,将我的修复程序反向移植到“my-xy”或“my-xz”分支,方法是从“my-master”中挑选它们,以便我可以针对特定版本的库而不是“my” -master“如果我不想生活在最前沿。

1 个答案:

答案 0 :(得分:0)

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

除了将补丁恢复到第三方的细节之外,您似乎走在正确的道路上以获得最大的灵活性。

相关问题