75

我之前已经分叉了 jockm/vert.x 并向他发送了一个拉取请求。现在我想分叉 vert-x/vert.x(jockm/vert.x 的上游)并向他们发送不同的拉取请求。但是当我单击 Fork 按钮时,不出所料,我最终进入了 jockm/vert.x 的 tjcrowder/vert.x 叉子。是否可以同时分叉 vert-x/vert.x 和 jockm/vert.x 以便我可以适当地发送每个拉取请求?

我担心答案可能与这个关于相反情况的问题相同(“没有 GitHub 方式,但你可以添加远程仓库”)但我希望不是这样 - 尤其是因为我不明白答案如何那里将允许我向新的遥控器发送拉取请求。

4

6 回答 6

36

没有 GitHub 方式(小谎言,见下文),但也没什么好害怕的。

根据定义,您的 fork 的 fork原始的 fork。打开拉取请求时,您可以选择为拉取请求选择来源和目的地。那里可用的选择显然取决于 fork 图,但只要图中 2 个存储库之间存在路径,您就应该是安全的。此外,由于拉取请求存在于网站端,只要您不想从 git 使用它,您甚至不需要添加远程。

当然,现在您可能想重新考虑您在该图中的位置,并让自己成为真正上游的直接孩子,但这大多是无关的。

如前所述,实际上有一种扭曲的方式来拥有多个分叉,即创建组织并在其中分叉。这样您就可以在同一个图中“拥有”多个存储库。但是真的没必要去那里。

于 2012-09-09T13:18:48.853 回答
18

多亏了sigma 的回答,我看到当我在 jockm/vert.x 存储库上执行拉取请求时,不仅上游存储库可用,上游存储库的所有其他分支也可用。所以我最终做的是:

  1. 删除我的 jockm/vert.x 的 fork,而不是 fork vert-x/vert.x,因为大多数情况下我想在主要的上游 repo 中工作,而不是 jockm 的版本。
  2. 为我想要发送到 jockm 的提交创建一个分支,并为我想要发送到 vert-x 的提交创建一个单独的分支。
  3. 对每个分支进行相关更改。
  4. 将每个分支的拉取请求发送到相关的存储库,因为 jockm/vert.x 存储库被列为请求的可能目标(以及大约 200 个其他分支)。

我使用了单独的分支(基本上是主题分支),以便这些提交将仍然是那些拉取请求中的唯一内容,因为同一分支上的后续提交会自动添加到拉取请求中,并且这些更改需要保持隔离直到/除非合并。

于 2012-09-10T09:20:36.020 回答
6

似乎更好的选择是在您的 fork 上创建一个分支,并从该分支创建一个拉取请求。您可以使用分支来“分叉”您的版本

于 2012-09-09T13:28:48.677 回答
3

如果要创建 GitHub 存储库的多个分叉,可以使用此替代方法

于 2020-12-16T19:25:44.857 回答
0

我没有看到关于“多叉”的任何细节,所以我最终可能会创建另一个 GitHub 帐户,在该帐户下我将进行第二次克隆,并将不同的拉取请求发送到vert.x/vert.x.

由于您可以拥有“同一台计算机上的多个 github 帐户”(使用正确的ssh 配置文件,也在此处描述),这是一种可能的解决方法。


但是请注意,GitLab 支持GitLab 14.0(2021 年 6 月):

分叉时编辑默认路径和项目名称

分叉时编辑默认路径和项目名称

复刻项目使您能够拥有原始存储库的精确副本,您可以在其中进行试验、应用更改以及向父项目提交贡献。
你的分叉应该有有意义的名字来解释他们的目标,如果你的项目是不同的,你可能需要一个项目的多个分叉。

在这个版本中,GitLab 现在支持在创建分叉时直接编辑项目名称和项目 slug。

您现在可以为同一个项目创建多个分支,每个分支都有不同的名称,都在同一个组中!

https://about.gitlab.com/images/14_0/edit_default_path_and_project_name_when_forking.png -- fork 时编辑默认路径和项目名称

请参阅文档问题

于 2012-09-09T10:36:24.537 回答
0

您也可以在您的个人资料/设置下创建一个新组织。然后你可以通过同一个账户 fork 同一个原始 repo 的不同状态。

于 2017-09-04T16:10:41.057 回答