【问题标题】:How can I fork the original repo when I've already forked a different fork当我已经分叉了一个不同的分叉时,我如何分叉原始仓库
【发布时间】:2012-09-02 12:37:12
【问题描述】:

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

我担心答案可能与 this question about the converse situation 相同(“没有 GitHub 方式,但你可以添加远程仓库”)但我希望不是这样 - 尤其是因为我不知道答案如何那里可以让我向新的遥控器发送拉取请求。

【问题讨论】:

    标签: github git-fork


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 果然,如果我做另一个拉取请求,我可以选择将它发送到 jockm/vert.x 或 vert-x/vert.x (或许多其他分支中的任何一个)上游)。谢谢!我必须小心避免尝试向 vert-x/vert.x 发送实际上特定于 jockm/vert.x 的更改,但这就是分支的用途。
    • FWIW,我 detailed below 我是如何应用这个答案中的知识的。再次感谢。
    • 问题是当你 PR 到原始仓库时,它会包含你不小心提交到同一个分支的所有废话。重命名你的 repo 然后分叉原始版本比清理混乱要容易得多。
    • 重命名 repo 似乎不允许重新分叉原始版本,它只会分叉到重命名的存储库?!?
    【解决方案2】:

    感谢sigma's answer,当我在 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 个其他分支)。

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        如果您想创建 GitHub 存储库的多个分叉,您可以使用 this 替代方案

        【讨论】:

        • 在 iPad 上,该页面永远不会为我加载...请在此处包含任何内容,因此此回复是独立的,以防类似消失(如果还没有)
        【解决方案5】:

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

        【讨论】:

        【解决方案6】:

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

        由于您可以拥有“Multiple github accounts on the same computer”(右侧是 ssh config file,也可以是 described here),因此这是一种可能的解决方法。


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

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

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

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

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

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

        请参阅 DocumentationIssue

        【讨论】:

        • 谢谢。如果我不能“正确”地做到这一点,我会记住这个解决方法。 (在这种 特殊 情况下,我认为 jockm/vert.x 存储库不会非常活跃,所以我可能只是确保他已撤消提交 [这是全部三行]然后取消分叉,但如果它出现在其他地方,这是有用的信息。)
        • @T.J.Crowder 我正在考虑取消分叉,但我不确定您的拉取请求的副作用。在考虑到拉取请求之前我不会取消分叉(正如您评论的那样),因此我建议使用第二个帐户。
        猜你喜欢
        • 2012-01-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-14
        • 2018-02-09
        • 2013-01-13
        • 1970-01-01
        • 2012-08-27
        相关资源
        最近更新 更多