关于分支
分支是一个新的仓库,它与原始的“上游”仓库共享代码和可见性设置。分支通常用于在将想法或更改建议回上游仓库之前进行迭代,例如在开源项目中,或者当用户没有上游仓库的写入权限时。有关更多信息,请参阅“使用分支”。
向他人的项目提出更改
例如,您可以使用分支来提出与修复错误相关的更改。与其记录您发现的错误,您可以
- 分叉存储库。
- 进行修复。
- 向项目所有者提交拉取请求。
将其他人的项目作为您自己想法的起点。
开源软件基于这样的理念:通过共享代码,我们可以制作更好、更可靠的软件。有关更多信息,请参阅开源计划的“关于开源计划”。
有关将开源原则应用于您组织在 GitHub.com 上的开发工作的更多信息,请参阅 GitHub 的白皮书“内部源代码简介”。
在从他人的项目分叉创建您的公共存储库时,请确保包含一个许可文件,该文件确定您希望如何与他人共享您的项目。有关更多信息,请参阅 choosealicense.com 上的“选择开源许可证”。
有关开源的更多信息,特别是如何创建和发展开源项目,我们创建了 开源指南,这些指南将通过推荐创建和维护开源项目存储库的最佳实践来帮助您培养健康的开源社区。您还可以参加免费的 GitHub 技能 课程,了解如何维护开源社区。
先决条件
如果您还没有,请先从 Git 设置 Git 和 GitHub.com 的身份验证。有关更多信息,请参阅“设置 Git”。
分叉存储库
您可能会分叉一个项目来向上游存储库提出更改。在这种情况下,定期将您的分叉与上游存储库同步是一个好习惯。为此,您需要在命令行上使用 Git。您可以使用您刚刚分叉的相同 octocat/Spoon-Knife 存储库来练习设置上游存储库。
-
在 GitHub.com 上,导航到 octocat/Spoon-Knife 存储库。
-
在页面右上角,单击“分叉”。
-
在“所有者”下,选择下拉菜单并点击一个分叉仓库的所有者。
-
默认情况下,分叉仓库的名称与它们的原始仓库相同。可以选择在“仓库名称”字段中输入一个名称来进一步区分你的分叉仓库。
-
可以选择在“描述”字段中输入你的分叉仓库的描述。
-
可以选择 **仅复制 DEFAULT 分支**。
对于许多分叉场景,例如为开源项目贡献代码,你只需要复制默认分支。如果你没有选择此选项,所有分支都将被复制到新的分叉仓库中。
-
点击 **创建分叉**。
**注意:** 如果你想从原始仓库中复制其他分支,你可以在 **分支** 页面中进行操作。有关更多信息,请参阅 "在你的仓库中创建和删除分支"。
要了解更多关于 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 上分叉的信息,请参阅 本文的网页浏览器版本.
在 GitHub Desktop 中,如果你尝试克隆一个你没有写入权限的仓库,系统会自动为你创建一个分叉仓库。
-
在 **文件** 菜单中,点击 **克隆仓库**。
-
点击与你想要克隆的仓库位置相对应的选项卡。你也可以点击 **URL** 手动输入仓库位置。
-
从仓库列表中,点击你想要克隆的仓库。
-
要选择你想要克隆仓库的本地目录,请在“本地路径”字段旁边点击 **选择...** 并导航到该目录。
-
在“克隆仓库”窗口的底部,点击 **克隆**。
-
阅读“你打算如何使用这个分叉仓库?”窗口中的信息。
- 如果你打算使用这个分叉仓库来为原始上游仓库贡献代码,请点击 **为父项目贡献代码**。
- 如果你打算使用这个分叉仓库来进行与上游无关的项目,请点击 **用于我自己的目的**。
-
点击 **继续**。
克隆你的分叉仓库
现在,你已经分叉了 Spoon-Knife 仓库,但你还没有将该仓库中的文件本地存储在你的电脑上。
-
在 GitHub.com 上,导航到 **你的分叉** 的 Spoon-Knife 仓库。
-
在文件列表上方,点击 代码.
-
复制仓库的 URL。
-
要使用 HTTPS 克隆仓库,在“HTTPS”下,点击 .
-
要使用 SSH 密钥克隆仓库,包括由你的组织的 SSH 证书颁发机构颁发的证书,点击 **SSH**,然后点击 .
-
要使用 GitHub CLI 克隆仓库,点击 **GitHub CLI**,然后点击 .
-
-
打开 终端终端Git Bash。
-
将当前工作目录更改为你要克隆目录的位置。
-
输入
git clone
,然后粘贴你之前复制的 URL。它将看起来像这样,用你的 GitHub 用户名代替YOUR-USERNAME
git clone https://github.com/YOUR-USERNAME/Spoon-Knife
-
按 **Enter**。你的本地克隆将被创建。
$ git clone https://github.com/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
-
在 **文件** 菜单中,点击 **克隆仓库**。
-
点击与你想要克隆的仓库位置相对应的选项卡。你也可以点击 **URL** 手动输入仓库位置。
-
从仓库列表中,点击你想要克隆的仓库。
-
要选择你想要克隆仓库的本地目录,请在“本地路径”字段旁边点击 **选择...** 并导航到该目录。
-
在“克隆仓库”窗口的底部,点击 **克隆**。
配置 Git 以将你的分叉与上游仓库同步
当你分叉一个项目以向上游仓库提出更改时,你可以配置 Git 将更改从上游仓库拉取到你的分叉的本地克隆中。
-
在 GitHub.com 上,导航到 octocat/Spoon-Knife 存储库。
-
在文件列表上方,点击 代码.
-
复制仓库的 URL。
-
要使用 HTTPS 克隆仓库,在“HTTPS”下,点击 .
-
要使用 SSH 密钥克隆仓库,包括由你的组织的 SSH 证书颁发机构颁发的证书,点击 **SSH**,然后点击 .
-
要使用 GitHub CLI 克隆仓库,点击 **GitHub CLI**,然后点击 .
-
-
打开 终端终端Git Bash。
-
将目录更改为克隆的分叉的位置。
- 要进入你的主目录,只需输入
cd
,不输入其他文本。 - 要列出当前目录中的文件和文件夹,输入
ls
。 - 要进入列出的目录之一,输入
cd YOUR-LISTED-DIRECTORY
。 - 要向上移动一个目录,输入
cd ..
。
- 要进入你的主目录,只需输入
-
输入
git remote -v
并按 **Enter**。你将看到你的分叉的当前配置的远程仓库。$ git remote -v > origin https://github.com/YOUR-USERNAME/YOUR-FORK.git (fetch) > origin https://github.com/YOUR-USERNAME/YOUR-FORK.git (push)
-
输入
git remote add upstream
,然后粘贴你在步骤 3 中复制的 URL 并按 **Enter**。它将看起来像这样git remote add upstream https://github.com/ORIGINAL-OWNER/Spoon-Knife.git
-
要验证你为你的分叉指定的新上游仓库,再次输入
git remote -v
。你应该看到你的分叉的 URL 作为origin
,以及上游仓库的 URL 作为upstream
。$ git remote -v > origin https://github.com/YOUR-USERNAME/YOUR-FORK.git (fetch) > origin https://github.com/YOUR-USERNAME/YOUR-FORK.git (push) > upstream https://github.com/ORIGINAL-OWNER/ORIGINAL-REPOSITORY.git (fetch) > upstream https://github.com/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 Team 上的组织。您无法使用 GitHub Free 将私有存储库分叉到组织。有关 GitHub Team 和 GitHub Free 的更多信息,请参阅“GitHub 的计划”。有关何时可以分叉存储库的更多信息,请参阅“关于分叉的权限和可见性”。
您可以浏览探索 GitHub以查找项目并开始为开源存储库做出贡献。有关更多信息,请参阅“在 GitHub 上寻找为开源做出贡献的方法”。
下一步
您现在已经分叉了一个存储库,练习了克隆您的分支,并配置了一个上游存储库。
-
有关从您的计算机克隆分支和同步分叉存储库中的更改的更多信息,请参阅“设置 Git”。
-
您也可以创建一个新的仓库,用于存放所有项目并通过 GitHub 共享代码。为您的项目创建仓库可以让您将代码存储在 GitHub 上。这将为您提供工作的备份,您可以选择与其他开发人员共享。有关更多信息,请参阅“仓库快速入门”。
-
GitHub 上的每个仓库都归个人或组织所有。您可以通过在 GitHub 上连接和关注他们来与个人、仓库和组织进行互动。有关更多信息,请参阅“在 GitHub 上寻找灵感”。
-
GitHub 拥有一个很棒的支持社区,您可以在其中寻求帮助并与来自世界各地的人们交流。加入 GitHub 社区 的对话。