当我已经分叉了另一个分叉时,如何分叉原始存储库

问题描述 投票:0回答:6

我之前分叉了 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 方式,但你可以添加远程存储库”),但我希望不是这样——尤其是因为我没有看到那里的答案如何允许我向新的远程发送拉取请求。

github git-fork
6个回答
41
投票

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

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

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

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


20
投票

感谢 sigma 的回答,我发现当我在 jockm/vert.x 存储库上执行拉取请求时,不仅上游存储库可用,而且上游存储库的所有其他分支也可用。所以我最终做的是:

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

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


8
投票

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


1
投票

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

vert.x/vert.x

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


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

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

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

分叉项目使您能够拥有原始存储库的精确副本,您可以在其中进行试验、应用更改并向父项目提交贡献。
您的分叉应该具有有意义的名称来解释其目标,如果您的项目存在分歧,您可能需要单个项目的多个分叉。

在此版本中,GitLab 现在支持在创建 fork 时直接编辑项目名称和项目 slug。

您现在可以创建同一项目的多个分支,每个分支具有不同的名称,全部位于同一组中!

请参阅文档问题


0
投票

您也可以在您的个人资料/设置下创建一个新组织。然后您可以通过同一个帐户分叉同一原始存储库的不同状态。


0
投票

我通常将其分叉给一个组织,然后将其转回我的主帐户。

© www.soinside.com 2019 - 2024. All rights reserved.