跳到主要内容

分叉存储库

fork是一个新的存储库,它与原始的“上游”存储库共享代码和可见性设置。

关于叉子

fork是一个新的存储库,它与原始的“上游”存储库共享代码和可见性设置。在将想法或更改提交回上游存储库之前,例如在开源项目中,或者当用户没有对上游存储库的写访问权限时,通常使用分叉迭代思想或更改。有关详细信息,请参阅“使用叉子."

建议对其他人的项目进行更改

例如,您可以使用fork来提出与修复bug相关的更改。您可以:

  • 分叉存储库。
  • 进行修复。
  • 向项目所有者提交请求。

把别人的项目作为你自己想法的起点。

开源软件基于这样的理念:通过共享代码,我们可以制作更好、更可靠的软件。有关更多信息,请参阅“关于开源倡议“关于开源倡议。

有关将开放源码原则应用于组织在GitHub.com上的开发工作的更多信息,请参阅GitHub的白皮书“内部资源简介."

从某人的项目分支创建公共存储库时,请确保包含一个许可文件,该文件决定了您希望如何与其他人共享您的项目。有关详细信息,请参阅“选择开放源代码许可证”点击choosealicense.com。

有关开源的更多信息,特别是如何创建和发展开源项目,我们创建了开放源代码指南这将通过推荐为您的开源项目创建和维护存储库的最佳实践,帮助您培育一个健康的开源社区。你也可以免费GitHub技能关于维护开源社区的课程。

前提条件

如果您还没有,首先从Git设置Git并使用GitHub.com进行身份验证。有关详细信息,请参阅“设置Git."

分叉存储库

您可以派生一个项目来建议对上游存储库进行更改。在这种情况下,最好定期将fork与上游存储库同步。为此,需要在命令行上使用Git。您可以使用相同的octocat/勺子刀您刚创建的存储库。

  1. 在GitHub.com上,导航到octocat/勺子刀存储库。

  2. 在页面的右上角,单击福克.

    存储库主页的屏幕截图。一个标有叉图标和“叉59.3k”的按钮的轮廓为深橙色。

  3. 在“所有者”下,选择下拉菜单并单击分叉存储库的所有者。

  4. 默认情况下,fork的名称与其上游存储库相同。(可选)要进一步区分fork,请在“Repository name”字段中键入名称。

  5. 或者,在“Description”字段中,键入fork的描述。

  6. (可选)选择仅复制DEFAULT分支.

    对于许多分叉场景,例如对开源项目的贡献,您只需要复制默认分支。如果不选择此选项,则所有分支都将复制到新分支中。

  7. 点击创建分叉.

注:如果要从上游存储库复制其他分支,可以从分支机构第页。有关详细信息,请参阅“在存储库中创建和删除分支."

要了解有关GitHub CLI的更多信息,请参阅“关于GitHub CLI."

要创建存储库的分支,请使用gh回购分叉子命令。

gh-repo-fork存储库

要在组织中创建分叉,请使用--组织标志。

gh回购分支REPOSTORY-org“octo-org”

您可以在GitHub.com或GitHub桌面上创建存储库。有关GitHub.com上分叉的信息,请参阅本文的web浏览器版本.

在GitHub桌面中,如果您试图克隆您没有写权限的存储库,则会自动为您创建一个分叉。

  1. 文件菜单,单击克隆存储库.

    Mac上菜单栏的屏幕截图。“文件”下拉菜单展开,“克隆存储库”选项以橙色轮廓突出显示。

    Windows上“GitHub桌面”菜单栏的屏幕截图。“文件”下拉菜单展开,“克隆存储库”选项以橙色轮廓突出显示。

  2. 单击与要克隆的存储库位置相对应的选项卡。您也可以单击统一资源定位地址手动输入存储库位置。

    “克隆存储库”窗口的屏幕截图。在窗口顶部,标签为“GitHub.com”、“GitHub Enterprise”和“URL”的选项卡以橙色轮廓突出显示。

  3. 从存储库列表中,单击要克隆的存储库。

    “克隆存储库”窗口的屏幕截图。“github/docs”存储库以橙色轮廓突出显示。

  4. 要选择要将存储库克隆到的本地目录,请单击“本地路径”字段旁边的选择。。。并导航到目录。

    “克隆存储库”窗口的屏幕截图。标有“选择”的按钮以橙色轮廓高亮显示。

  5. 在“克隆存储库”窗口的底部,单击克隆.

  6. 阅读“你打算如何使用这个叉子?”窗口中的信息。

    • 如果您计划使用此fork为原始上游存储库贡献资源,请单击为父项目做出贡献.
    • 如果计划将此分叉用于未连接到上游的项目,请单击为了我自己的目的.
  7. 点击继续.

克隆分叉存储库

现在,您有一个Spoon Knife存储库的分支,但您的计算机上没有该存储库中的文件。

  1. 在GitHub.com上,导航到你的叉子勺子刀储存库。

  2. 在文件列表上方,单击 代码.

    存储库登录页上文件列表的屏幕截图。“代码”按钮以深橙色轮廓突出显示。

  3. 复制存储库的URL。

    • 要使用HTTPS克隆存储库,请在“HTTPS”下单击.

    • 要使用SSH密钥(包括组织的SSH证书颁发机构颁发的证书)克隆存储库,请单击SSH(SSH),然后单击.

    • 要使用GitHub CLI克隆存储库,请单击GitHub CLI,然后单击.

      “代码”下拉菜单的屏幕截图。在存储库的HTTPS URL右侧,一个复制图标的轮廓为深橙色。

  4. 正常开放终端终端Git猛击.

  5. 将当前工作目录更改为需要克隆目录的位置。

  6. 类型git克隆,然后粘贴之前复制的URL。它看起来像这样,用您的GitHub用户名代替您的用户名:

    git克隆https://github.com/YOUR-USERNAME/勺子刀
  7. 按下输入。将创建您的本地克隆。

    $吉特克隆https://github.com/YOUR-USERNAME/勺子刀
    >克隆到“勺子刀”。。。
    >远程:计数对象:10,完成.
    >远程:压缩对象:100%(8/8),完成.
    >远程:总计10个(增量1),重复使用10个(δ1)
    >开箱物品:100%(10/10),完成.
    

要了解有关GitHub CLI的更多信息,请参阅“关于GitHub CLI."

要创建fork的克隆,请使用--克隆标志。

gh repo fork REPOSITORY--克隆=true
  1. 文件菜单,单击克隆存储库.

    Mac上菜单栏的屏幕截图。“文件”下拉菜单展开,“克隆存储库”选项以橙色轮廓突出显示。

    Windows上“GitHub桌面”菜单栏的屏幕截图。“文件”下拉菜单展开,“克隆存储库”选项以橙色轮廓突出显示。

  2. 单击与要克隆的存储库位置相对应的选项卡。您也可以单击统一资源定位地址手动输入存储库位置。

    “克隆存储库”窗口的屏幕截图。在窗口顶部,标签为“GitHub.com”、“GitHub Enterprise”和“URL”的选项卡以橙色轮廓突出显示。

  3. 从存储库列表中,单击要克隆的存储库。

    “克隆存储库”窗口的屏幕截图。“github/docs”存储库以橙色轮廓突出显示。

  4. 要选择要将存储库克隆到的本地目录,请单击“本地路径”字段旁边的选择。。。并导航到目录。

    “克隆存储库”窗口的屏幕截图。标有“选择”的按钮以橙色轮廓高亮显示。

  5. 在“克隆存储库”窗口的底部,单击克隆.

配置Git以将fork与上游存储库同步

当您派生项目以向上游存储库建议更改时,可以配置Git将更改从上游存储库拉入派生的本地克隆。

  1. 在GitHub.com上,导航到octocat/勺子刀存储库。

  2. 在文件列表上方,单击 代码.

    存储库登录页上文件列表的屏幕截图。“代码”按钮以深橙色轮廓突出显示。

  3. 复制存储库的URL。

    • 要使用HTTPS克隆存储库,请在“HTTPS”下单击.

    • 要使用SSH密钥(包括组织的SSH证书颁发机构颁发的证书)克隆存储库,请单击SSH(SSH),然后单击.

    • 要使用GitHub CLI克隆存储库,请单击GitHub CLI,然后单击.

      “代码”下拉菜单的屏幕截图。在存储库的HTTPS URL右侧,一个复制图标的轮廓为深橙色。

  4. 正常开放终端终端Git猛击.

  5. 将目录更改为克隆的分叉的位置。

    • 要转到主目录,只需键入光盘没有其他文本。
    • 要列出当前目录中的文件和文件夹,请键入最小二乘法.
    • 要进入列出的目录之一,请键入cd您列出的方向.
    • 要进入一个目录,请键入光盘。。.
  6. 类型git远程-v然后按输入。您将看到您的fork当前配置的远程存储库。

    $git远程-v
    >原产地https://github.com/YOUR-USERNAME/YOUR-FORK.git网站(取)
    >原产地https://github.com/YOUR-USERNAME/YOUR-FORK.git网站(推动)
    
  7. 类型git远程添加上游,然后粘贴在步骤3中复制的URL,然后按输入。它将如下所示:

    git远程添加上游https://github.com/ORIGINAL-OWNER/勺子刀.git
  8. 要验证为fork指定的新上游存储库,请键入git远程-v再一次。您应该将叉子的URL显示为起源,上游存储库的URL为上游.

    $git远程-v
    >原产地https://github.com/YOUR-USERNAME/YOUR-FORK.git网站(获取)
    >原产地https://github.com/YOUR-USERNAME/YOUR-FORK.git网站(推动)
    >上游https://github.com/ORIGINAL-OWNER/ORIGINAL-REPOSITORY.git(取)
    >上游https://github.com/ORIGINAL-OWNER/ORIGINAL-REPOSITORY.git(推动)
    

现在,您可以使用几个Git命令使fork与上游存储库保持同步。有关详细信息,请参阅“同步分叉."

要了解有关GitHub CLI的更多信息,请参阅“关于GitHub CLI."

要为分叉存储库配置远程存储库,请使用--远程标志。

gh repo fork REPOSITORY--远程=true

要指定远程存储库的名称,请使用--远程名称标志。

gh repo fork REPOSITORY--远程名称“main-remote-repo”

编辑分叉

您可以对fork进行任何更改,包括:

  • 创建分支: 分支机构允许您构建新功能或测试想法,而不会使您的主要项目面临风险。
  • 打开拉取请求:如果您想回馈上游存储库,可以向原始作者发送请求,通过提交一个拉入请求.

找到另一个存储库以分叉

分出一个存储库,开始为项目做出贡献。您可以将任何公共存储库分给您的个人帐户或您有权创建存储库的组织。如果您有权访问私有存储库,并且所有者允许分叉,则可以将存储库分叉到您的个人帐户或GitHub团队中您有权创建存储库的组织。您不能使用GitHub Free将私有存储库分给组织。有关GitHub Team和GitHub Free的更多信息,请参阅“GitHub的计划."有关何时可以派生存储库的详细信息,请参阅“关于fork的权限和可见性."

您可以浏览探索GitHub找到项目并开始为开源存储库做出贡献。有关详细信息,请参阅“寻找在GitHub上促进开源的方法."

接下来的步骤

现在您已经分叉了一个存储库,练习了克隆分叉,并配置了一个上游存储库。

  • 有关克隆分叉并从计算机同步分叉存储库中的更改的详细信息,请参阅“设置Git."

  • 您还可以创建一个新的存储库,在其中可以放置所有项目并在GitHub上共享代码。为您的项目创建一个存储库可以将代码存储在GitHub中。这提供了您的工作备份,您可以选择与其他开发人员共享。有关详细信息,请参阅“存储库快速入门."

  • GitHub上的每个存储库都由个人或组织拥有。通过在GitHub上连接和跟踪人员、存储库和组织,您可以与他们进行交互。有关详细信息,请参阅“在GitHub上寻找灵感."

  • GitHub有一个很棒的支持社区,您可以在那里寻求帮助并与世界各地的人交谈。加入上的对话GitHub社区.