Skip to main content

此版本的 GitHub Enterprise Server 已于以下日期停止服务 2024-09-25. 即使针对重大安全问题,也不会发布补丁。 为了获得更好的性能、更高的安全性和新功能,请升级到最新版本的 GitHub Enterprise。 如需升级帮助,请联系 GitHub Enterprise 支持

为存储库创建分支

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

Platform navigation

关于分叉

分支是一个新存储库,与原“上游”存储库共享代码和可见性设置。 分支通常用于在向上游存储库提出想法或修改之前进行迭代,比如在开放源代码项目中,或当用户没有对上游存储库的写入权限时。有关详细信息,请参阅“使用复刻”。

对其他人的项目提出更改

例如,可以使用复刻提出与修复 Bug 相关的更改。 无需为你发现的漏洞创建问题,你可以:

  • 创建存储库分支。
  • 进行修复
  • 向项目所有者提交拉取请求。

将其他人的项目用作自己创意的起点。

开源软件的理念是通过共享代码,可以开发出更好、更可靠的软件。 有关详细信息,请参阅开放源代码计划上的“关于开放源代码计划”。

有关将开放源代码原则应用于组织在 GitHub 上的开发工作的详细信息,请参阅 GitHub 的白皮书“内部源简介”。

从其他人的项目复刻创建公共仓库时,请确保包含许可文件以确定您希望与其他人共享项目。 有关详细信息,请参阅 choosealicense 上的“选择开放源代码许可”。

为深入了解开源,特别是如何创建和发展开源项目,我们制作了开源指南,它将通过推荐关于创建和维护开源项目存储库的最佳实践,帮助你培养一个健康发展的开源社区。 还可以免费学习 GitHub Skills 课程来维护开源社区。

先决条件

如果尚未设置,请首先从 Git 使用 你的 GitHub Enterprise Server 实例 设置 Git 和身份验证。 有关详细信息,请参阅“设置 Git”。

复刻仓库

你可能为了对上游存储库提议更改而创建项目分支。 在这种情况下,最好定期将您的复刻与上游仓库同步。 为此,您需要在命令行上使用 Git。 可以使用刚才已创建分支的同一 octocat/Spoon-Knife 存储库来练习设置上游存储库。

  1. 在 你的 GitHub Enterprise Server 实例 上,导航到 octocat/Spoon-Knife 存储库。

  2. 在页面右上角,单击“分支”。

    存储库的主页的屏幕截图。 标有分支图标和“分支 59.3k”的按钮用深橙色框出。

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

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

  5. (可选)在“描述”字段中键入分支的描述。

  6. (可选)选择“仅复制默认分支”。

    对于许多分支场景(例如参与开源项目),你只需复制默认分支。 如果未选择此选项,所有分支都将复制到新分支中。

  7. 单击“创建分支”。

注意:如果要从上游存储库复制其他分支,可从“分支”页执行此操作 。 有关详细信息,请参阅“创建和删除仓库中的分支”。

若要详细了解 GitHub CLI,请参阅“关于 GitHub CLI”。

若要创建存储库的分支,请使用 gh repo fork 子命令。

gh repo fork REPOSITORY

若要在组织中创建分支,请使用 --org 标记。

gh repo fork REPOSITORY --org "octo-org"

可以在 GitHub.com 上或 GitHub Desktop 中创建存储库分支。 有关对 GitHub.com 创建分支的信息,请参阅本文的 Web 浏览器版本

在 GitHub Desktop 中,如果尝试克隆没有写入访问权限的存储库,系统会自动为你创建分支。

  1. 在“文件”菜单中,单击“克隆存储库” 。

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

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

  2. 单击与要克隆的仓库位置对应的选项卡。 也可以单击 URL 手动输入存储库位置。

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

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

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

  4. 若要选择要将存储库克隆到其中的本地目录,请单击“本地路径”字段旁的“选择...”,然后导航到该目录。

    “克隆存储库”窗口的屏幕截图。 标有“选择”的按钮用橙色边框突出显示。

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

  6. 阅读“你打算如何使用此分叉?”中的信息 窗口中的视图相同。

    • 如果计划使用此分支参与原始上游存储库,请单击“参与父项目”。
    • 如果计划将此分支用于未连接到上游的项目,请单击“用于我自己的目的”。
  7. 单击 “继续”

克隆复刻的仓库

现在,你有了 Spoon-Knife 存储库的分支,但你的计算机本地还没有该存储库中的文件。

  1. 在 你的 GitHub Enterprise Server 实例 上,导航到 Spoon-Knife 存储库的分支

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

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

  3. 复制存储库的 URL。

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

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

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

      “代码”下拉菜单的屏幕截图。 在存储库的 HTTPS URL 的右侧,复制图标以深橙色框出。

  4. 打开终端终端Git Bash

  5. 将当前的工作目录更改为您想要存储克隆目录的位置。

  6. 键入 git clone,然后粘贴之前复制的 URL。 它将如下所示,使用你的 GitHub Enterprise Server 用户名替换 YOUR-USERNAME

    git clone https://HOSTNAME/YOUR-USERNAME/Spoon-Knife
    
  7. Enter。 将创建您的本地克隆。

    $ git clone https://HOSTNAME/YOUR-USERNAME/Spoon-Knife
    > Cloning into `Spoon-Knife`...
    > remote: Counting objects: 10, done.
    > remote: Compressing objects: 100% (8/8), done.
    > remote: Total 10 (delta 1), reused 10 (delta 1)
    > Unpacking objects: 100% (10/10), done.
    

若要详细了解 GitHub CLI,请参阅“关于 GitHub CLI”。

若要创建分支的克隆,请使用 --clone 标记。

gh repo fork REPOSITORY --clone=true
  1. 在“文件”菜单中,单击“克隆存储库” 。

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

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

  2. 单击与要克隆的仓库位置对应的选项卡。 也可以单击 URL 手动输入存储库位置。

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

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

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

  4. 若要选择要将存储库克隆到其中的本地目录,请单击“本地路径”字段旁的“选择...”,然后导航到该目录。

    “克隆存储库”窗口的屏幕截图。 标有“选择”的按钮用橙色边框突出显示。

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

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

为了对上游存储库提议更改而创建项目分支时,你可以配置 Git 以将更改从上游存储库拉取到分支的本地克隆。

  1. 在 你的 GitHub Enterprise Server 实例 上,导航到 octocat/Spoon-Knife 存储库。

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

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

  3. 复制存储库的 URL。

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

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

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

      “代码”下拉菜单的屏幕截图。 在存储库的 HTTPS URL 的右侧,复制图标以深橙色框出。

  4. 打开终端终端Git Bash

  5. 将目录更改为您克隆的复刻的位置。

    • 若要转到主目录,请只键入 cd,不要键入其他文本。
    • 若要列出当前目录中的文件和文件夹,请键入 ls
    • 若要进入列出的某个目录,请键入 cd YOUR-LISTED-DIRECTORY
    • 若要回到上一个目录,请键入 cd ..
  6. 键入 git remote -v,然后按“Enter”****。 你将看到当前为分支配置的远程存储库。

    $ git remote -v
    > origin  https://HOSTNAME/YOUR-USERNAME/YOUR-FORK.git (fetch)
    > origin  https://HOSTNAME/YOUR-USERNAME/YOUR-FORK.git (push)
    
  7. 键入 git remote add upstream,然后粘贴在步骤 3 中复制的 URL,然后按 Enter。 它将如下所示:

    git remote add upstream https://HOSTNAME/ORIGINAL-OWNER/Spoon-Knife.git
    
  8. 若要验证为分支指定的新上游存储库,请再次键入 git remote -v。 你应该会看到分支的 URL 为 origin,上游存储库的 URL 为 upstream

    $ git remote -v
    > origin    https://HOSTNAME/YOUR-USERNAME/YOUR-FORK.git (fetch)
    > origin    https://HOSTNAME/YOUR-USERNAME/YOUR-FORK.git (push)
    > upstream  https://HOSTNAME/ORIGINAL-OWNER/ORIGINAL-REPOSITORY.git (fetch)
    > upstream  https://HOSTNAME/ORIGINAL-OWNER/ORIGINAL-REPOSITORY.git (push)
    

现在,您可以使用一些 Git 命令使您的复刻与上游仓库保持同步。 有关详细信息,请参阅“同步复刻”。

若要详细了解 GitHub CLI,请参阅“关于 GitHub CLI”。

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

gh repo fork REPOSITORY --remote=true

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

gh repo fork REPOSITORY --remote-name "main-remote-repo"

编辑分支

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

  • 创建分支:分支支持在不影响主项目的情况下构建新功能或测试创意。
  • 提交拉取请求:如果想要参与上游存储库的内容,可以通过提交拉取请求,请求原作者将你的分支拉取到他们的存储库。

另找一个仓库进行复刻

复刻仓库,开始参与项目。 如果存储库和企业策略设置允许创建分支,则可以将专用或内部存储库分支到个人帐户或分支到你拥有存储库创建权限的 GitHub 上的组织。 通常,可以将任何公共存储库分支到个人帐户或分支到你有权创建存储库的组织。

有关何时可以创建存储库分支的详细信息,请参阅“关于分支的权限和可见性”。

后续步骤

您现在已经复刻了仓库、练习了克隆复刻并配置了上游仓库。

  • 有关克隆分支和从计算机同步分支存储库更改的详细信息,请参阅“设置 Git”。

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

  • GitHub 中的每个仓库均归个人或组织所有。 您可以在 GitHub Enterprise Server 上连接和关注人员、仓库和组织以与之进行交互。 有关详细信息,请参阅“在 GitHub 上寻找灵感”。

  • GitHub 有一个强大的支持社区,你可以在那里寻求帮助并与来自世界各地的人交谈。 加入 GitHub Community 上的对话。