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