【问题标题】:How can I make a second fork of a GitHub project?如何创建 GitHub 项目的第二个分支?
【发布时间】:2015-01-23 22:25:11
【问题描述】:

我想 fork 一个 github 项目来解决几个问题,然后发送一个拉取请求。

我遇到的问题是我已经分叉了该项目以适应另一个用户群。

是否可以创建第二个分叉?如果是这样,怎么做?

当我现在尝试分叉时,它只会将我带到之前创建的分叉。

【问题讨论】:

  • 为什么不直接从 master 创建一个新分支,修复内容并将该分支的请求拉取到原始项目 master?
  • 我能想到的最丑的解决办法就是新建一个GitHub账号。我并不认真地建议这一点。正如@noMAD 所暗示的,我怀疑这是一个分支的工作,而不是一个分支。
  • @noMAD 可以工作,因为我是贡献者。只是好奇,如果我不是贡献者,该解决方案会起作用吗?
  • @pixelfairy,你说的“贡献者”是什么意思?如果你提交一个拉取请求,这不是根据定义做出贡献吗?
  • @Chris ...我的意思是我可以在不发出拉取请求的情况下提交和推送,但我想以官方方式进行,我希望其他人在我推送之前审查更改一个公共项目。

标签: github


【解决方案1】:

除非您使用两个不同的 GitHub 帐户,否则无法拥有同一个 GitHub 项目的两个分支。

所以:

  1. 创建一个单独的 GitHub 帐户(并验证电子邮件)

  2. 分叉 项目

  3. 邀请您的主 GitHub 帐户作为“协作者”(来自 设置)

您可能需要添加额外的步骤,即使用新的 GitHub 帐户创建组织并邀请您的主 github 帐户作为该组织的所有者(同时确保您的新分支在该新组织中)。这将允许您执行诸如自动部署到连接到您的主 GitHub 帐户的 Heroku 应用程序之类的事情。

为什么我们不能有多个分叉???

【讨论】:

  • 根据 Github 上的服务条款,您不能拥有第二个免费帐户。除非您付费,否则这肯定会限制您选择分叉项目。
  • @Liggiluff -- 感谢您阅读 Github TOS 并告知我们。
  • 这个答案已经3年了,有更新吗?
  • @SantoshGupta7 stackoverflow.com/a/19279822 也许看看这个答案
【解决方案2】:

我的意思是我可以直接提交和推送,而无需发出拉取请求,但我想以官方方式进行,并且我希望其他人在我推送到公共项目之前审查更改。

GitHub 拉取请求不需要从 fork 提交; they work within a single repository as well:

Pull 请求在 fork & pull 模型中特别有用,因为它们提供了一种通知项目维护人员有关 fork 更改的方法。但是,它们在共享存储库模型中也很有用,它们用于在合并到主线分支之前启动代码审查和关于一组更改的一般讨论。

即使您在技术上不需要这样做,也没有什么能阻止您创建拉取请求。这通常被认为是最佳实践,GitHub's own Flow model 主要基于拉取请求。

Creating a pull request 在单个存储库中与从 fork 创建一个非常相似:

  1. 创建一个功能分支并将您的工作推送到 GitHub 上的该分支
  2. 在 GitHub Web UI 中,切换到您的功能分支
  3. 点击“比较”和查看按钮

【讨论】:

  • 谢谢!这真是很好的信息。这绝对有助于我实现我的近期目标。 ...官方的答案是我不能创建多个分叉吗?如果我想为另一个用户群分叉会发生什么?我需要先转移另一个(第一个)分叉的所有权吗?
  • @pixelfairy,官方的回答是“有点”。据我所知,没有办法在您的帐户下创建另一个分叉使用网络用户界面的分叉按钮。 (您可能想调查organizations。)但归根结底,fork 只是存储库的副本。您可以轻松地创建一个新的空存储库,将其命名为project-fork,然后推送到它。请参阅stackoverflow.com/questions/12338240/… 以获得更全面的答案。
  • 我喜欢这个变通方法!对于手头的工作,我将遵循 GitHub 流模型,然后如果我想为新的用户群分叉代码库,我将创建一个新的 repo 并推送到它。谢谢!!
  • 有时你只需要两个叉子。
  • 有时你可以弄清楚如何用一个叉子做你想做的事,但是用两个叉子做这件事(或者更确切地说是)要简单得多。
【解决方案3】:

github 手册推荐的最佳方法是使用命令行 git,镜像克隆您的 repo 并将其推送到您的 github。

https://docs.github.com/en/github/creating-cloning-and-archiving-repositories/duplicating-a-repository

如果您更喜欢 GitHub Web 界面而不是命令行,则 GUI 友好的解决方法是创建一个新组织并分叉到该新组织。

我能想到的另一种 GUI 方式是使用 repo 的设置将 fork 声明为模板 repo,这样您就可以根据需要创建任意数量的 fork。

【讨论】:

    【解决方案4】:

    诀窍是使用master 分支来创建拉取请求。然后,您不需要创建多个分支,因为您可以根据需要创建任意数量的分支,并对每个分支单独发出拉取请求。

    给定一个干净的分叉存储库,创建一个专用分支并将该分支用于拉取请求。

    您可以从 Web UI 创建分支(虽然不是很明显)。

    单击分支选择下拉菜单,在输入字段中输入新的分支名称,然后您将看到一个可点击链接Create branch: <new-branch-name>,如下所示。棘手的 UI 部分是,您应该单击 "create branch: xyz..." 可能不是很明显 - 它不会显示为按钮,并且有没有迹象表明这是一个可点击链接。此外,在您输入搜索框之前,没有任何提示可以创建分支 - 任何人都可能会认为搜索框专门用于搜索分支,而不是用于创建它们。

    如果您已经直接在 fork 的 master 分支中进行了更改,请考虑将这些更改移动到专用分支中,并将 master 分支硬重置到原始远程,以便您保持干净以与上游存储库同步.

    另见:

    【讨论】:

      猜你喜欢
      • 2012-05-28
      • 1970-01-01
      • 2022-12-08
      • 1970-01-01
      • 1970-01-01
      • 2019-08-28
      • 1970-01-01
      • 1970-01-01
      • 2017-08-27
      相关资源
      最近更新 更多