分支是一个新存储库,与原“上游”存储库共享代码和可见性设置。 分支通常用于在向上游存储库提出想法或修改之前进行迭代,比如在开放源代码项目中,或当用户没有对上游存储库的写入权限时。 有关详细信息,请参阅“使用复刻”。
例如,可以使用复刻提出与修复 Bug 相关的更改。 无需为你发现的漏洞创建问题,你可以:
- 创建存储库分支。
- 进行修复
- 向项目所有者提交拉取请求。
开源软件的理念是通过共享代码,可以开发出更好、更可靠的软件。 有关详细信息,请参阅开放源代码计划上的关于开放源代码计划。
有关将开放源代码原则应用于组织在 上的开发工作的详细信息,请参阅 的白皮书“内部源简介”。
从其他人的项目复刻创建公共仓库时,请确保包含许可文件以确定您希望与其他人共享项目。 有关详细信息,请参阅 choosealicense.com 上的选择开放源代码许可。
为深入了解开源,特别是如何创建和发展开源项目,我们制作了开源指南,它将通过推荐关于创建和维护开源项目存储库的最佳实践,帮助你培养一个健康发展的开源社区。 还可以免费学习 Skills 课程来维护开源社区。
如果尚未设置,请首先从 Git 使用 你的 Enterprise Server 实例 设置 Git 和身份验证。 有关详细信息,请参阅“设置 Git”。
你可能为了对上游存储库提议更改而创建项目分支。 在这种情况下,最好定期将您的复刻与上游仓库同步。 为此,您需要在命令行上使用 Git。 可以使用刚才已创建分支的同一 octocat/Spoon-Knife 存储库来练习设置上游存储库。
在 你的 Enterprise Server 实例 上,导航到 octocat/Spoon-Knife 存储库。
在页面右上角,单击“分支”。
在“所有者”下,选择下拉菜单,然后单击分支存储库的所有者。
默认情况下,分支的名称与其上游存储库的名称相同。 (可选)若要进一步区分分支,请在“存储库名称”字段中键入名称。
(可选)在“描述”字段中键入分支的描述。
(可选)选择“仅复制默认分支”。
对于许多分支场景(例如参与开源项目),你只需复制默认分支。 如果未选择此选项,所有分支都将复制到新分支中。
单击“创建分支”。
注意
如果要从上游存储库复制其他分支,可从“分支”页执行此操作****。 有关详细信息,请参阅“创建和删除仓库中的分支”。
注意
若要详细了解 CLI,请参阅“关于 CLI”。
若要创建存储库的分支,请使用 gh repo fork
子命令。
gh repo fork REPOSITORY
若要在组织中创建分支,请使用 --org
标记。
gh repo fork REPOSITORY --org "octo-org"
可以在 .com 上或 Desktop 中创建存储库分支。 有关对 .com 创建分支的信息,请参阅本文的 Web 浏览器版本。
在 Desktop 中,如果你克隆了一个你没有写权限的仓库,然后尝试向该仓库推送更改,系统会为你创建一个派生。
在“文件”菜单中,单击“克隆存储库” 。
单击与要克隆的仓库位置对应的选项卡。 在此示例中,我们单击“URL”选项卡。
输入要克隆的仓库的 URL 或路径。
若要选择要将存储库克隆到其中的本地目录,请单击“本地路径”字段旁的“选择...”,然后导航到该目录。
在“克隆存储库”窗口的底部,单击“克隆”。
若要创建派生,请尝试将更改推送到仓库。 例如,创建新的分支并发布它。 将会出现一个提示,询问你是否要派生此仓库。
阅读“你打算如何使用此分叉?”中的信息 窗口中的视图相同。
- 如果计划使用此分支参与原始上游存储库,请单击“参与父项目”。
- 如果计划将此分支用于未连接到上游的项目,请单击“用于我自己的目的”。
单击 “继续” 。
现在,你有了 Spoon-Knife 存储库的分支,但你的计算机本地还没有该存储库中的文件。
在 你的 Enterprise Server 实例 上,导航到 Spoon-Knife 存储库的分支。
在文件列表上方,单击 “代码”。
复制存储库的 URL。
要使用 HTTPS 克隆存储库,请在“HTTPS”下单击 。
要使用 SSH 密钥克隆存储库,包括组织的 SSH 证书颁发机构颁发的证书,请单击“SSH”,然后单击 。
要使用 CLI 克隆存储库,请单击“ CLI”,然后单击 。
打开终端终端Git Bash。
将当前的工作目录更改为您想要存储克隆目录的位置。
键入
git clone
,然后粘贴之前复制的 URL。 它将如下所示,使用你的 用户名替换YOUR-USERNAME
:git clone https://HOSTNAME/YOUR-USERNAME/Spoon-Knife
按 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.
现在,你有了 Spoon-Knife 存储库的分支,但你的计算机本地还没有该存储库中的文件。
注意
若要详细了解 CLI,请参阅“关于 CLI”。
若要创建分支的克隆,请使用 --clone
标记。
gh repo fork REPOSITORY --clone=true
为了对上游存储库提议更改而创建项目分支时,你可以配置 Git 以将更改从上游存储库拉取到分支的本地克隆。
在 你的 Enterprise Server 实例 上,导航到 octocat/Spoon-Knife 存储库。
在文件列表上方,单击 “代码”。
复制存储库的 URL。
要使用 HTTPS 克隆存储库,请在“HTTPS”下单击 。
要使用 SSH 密钥克隆存储库,包括组织的 SSH 证书颁发机构颁发的证书,请单击“SSH”,然后单击 。
要使用 CLI 克隆存储库,请单击“ CLI”,然后单击 。
打开终端终端Git Bash。
将目录更改为您克隆的复刻的位置。
- 若要转到主目录,请只键入
cd
,不要键入其他文本。 - 若要列出当前目录中的文件和文件夹,请键入
ls
。 - 若要进入列出的某个目录,请键入
cd YOUR-LISTED-DIRECTORY
。 - 若要回到上一个目录,请键入
cd ..
。
- 若要转到主目录,请只键入
键入
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)
键入
git remote add upstream
,然后粘贴在步骤 3 中复制的 URL,然后按 Enter。 它将如下所示:git remote add upstream https://HOSTNAME/ORIGINAL-OWNER/Spoon-Knife.git
若要验证为分支指定的新上游存储库,请再次键入
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 命令使您的复刻与上游仓库保持同步。 有关详细信息,请参阅“同步复刻”。
注意
若要详细了解 CLI,请参阅“关于 CLI”。
若要为分支存储库配置远程存储库,请使用 --remote
标志。
gh repo fork REPOSITORY --remote=true
若要指定远程存储库的名称,请使用 --remote-name
标志。
gh repo fork REPOSITORY --remote-name "main-remote-repo"
您可以对复刻进行任何更改,包括:
复刻仓库,开始参与项目。 如果存储库和企业策略设置允许创建分支,则可以将专用或内部存储库分支到个人帐户或分支到你拥有存储库创建权限的 上的组织。 通常,可以将任何公共存储库分支到个人帐户或分支到你有权创建存储库的组织。
有关何时可以创建存储库分支的详细信息,请参阅“关于分支的权限和可见性”。
您现在已经复刻了仓库、练习了克隆复刻并配置了上游仓库。