关于派生
如果您想参与他人的项目但没有代码库的写入权限,您可以使用“派生和拉取请求”工作流程。
分支 (fork) 是一个新的代码库,它与原始的“上游”代码库共享代码和可见性设置。分支通常用于在将想法或更改提交回上游代码库之前进行迭代,例如在开源项目中,或者当用户无权访问上游代码库时。
您可以通过从您的分支向上传代码库提交拉取请求来贡献代码。更多信息,请参见“创建代码库分支”。
创建代码库分支
本教程使用Spoon-Knife 项目,这是一个托管在 GitHub 上的测试代码库,允许您测试分支和拉取请求工作流程。
-
导航到位于 https://github.com/octocat/Spoon-Knife 的
Spoon-Knife
项目。 -
在页面右上角,单击创建分支 (Fork)。
-
在“所有者”下,选择下拉菜单并单击分支代码库的所有者。
注意
如果您的用户名显示为灰色,则表示分支已存在。您应该更新现有的分支。更多信息,请参见“同步分支”。
-
默认情况下,分支的名称与其上游代码库的名称相同。或者,为了进一步区分您的分支,请在“代码库名称”字段中键入名称。
-
或者,在“描述”字段中,键入分支的描述。
-
或者,选择仅复制默认分支。
对于许多分支场景,例如为开源项目贡献代码,您只需要复制默认分支。如果您不选择此选项,则所有分支都将复制到新的分支中。
-
单击创建分支 (Create fork)。
注意
如果您想从上游代码库复制其他分支,您可以从分支页面进行操作。更多信息,请参见“在代码库中创建和删除分支”。
克隆分支
您已成功创建 Spoon-Knife 代码库的分支,但到目前为止,它只存在于 GitHub 上。要能够处理该项目,您需要将其克隆到您的计算机上。
您可以使用命令行、GitHub CLI 或 GitHub Desktop 克隆您的分支。
-
在 GitHub 上,导航到您的 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. > remove: 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手动输入代码库位置。
-
从代码库列表中,单击要克隆的代码库。
-
要选择要克隆代码库的本地目录,请在“本地路径”字段旁边单击选择...并导航到该目录。
-
在“克隆代码库”窗口底部,单击克隆。
创建分支以进行工作
在更改项目之前,您应该创建一个新分支并检出该分支。通过将更改保留在其自身的分支中,您可以遵循 GitHub 流程,并确保将来更容易再次为同一项目做出贡献。更多信息,请参见“GitHub 流程”。
git branch BRANCH-NAME
git checkout BRANCH-NAME
git branch BRANCH-NAME
git checkout BRANCH-NAME
有关如何在 GitHub Desktop 中创建和管理分支的更多信息,请参见“在 GitHub Desktop 中管理分支”。
进行和推送更改
继续使用您喜欢的文本编辑器(例如Visual Studio Code)对项目进行一些更改。例如,您可以更改index.html
中的文本以添加您的 GitHub 用户名。
准备好提交更改后,暂存并提交更改。git add .
告诉 Git 您想将所有更改包含在下一个提交中。git commit
会对这些更改进行快照。
git add .
git commit -m "a short description of the change"
git add .
git commit -m "a short description of the change"
有关如何在 GitHub Desktop 中暂存和提交更改的更多信息,请参见“在 GitHub Desktop 中提交和查看对项目的更改”。
当您暂存和提交文件时,您实际上是在告诉 Git:“好的,对我的更改进行快照!”您可以继续进行更多更改,并进行更多提交快照。
目前,您的更改仅存在于本地。准备好将更改推送到 GitHub 后,将更改推送到远程。
git push
git push
有关如何在 GitHub Desktop 中推送更改的更多信息,请参见“从 GitHub Desktop 推送更改到 GitHub”。
创建拉取请求
最后,您准备好将更改提交到主项目了!这是创建其他人项目的分支的最后一步,可以说是最重要的一步。如果您做出了您认为会使整个社区受益的更改,您绝对应该考虑回馈。
为此,请转到 GitHub 上托管您的项目的代码库。在此示例中,它位于https://github.com/<your_username>/Spoon-Knife
。您会看到一个横幅,指示您的分支比octocat:main
提前一个提交。单击贡献,然后单击打开拉取请求。
GitHub 将带您进入一个页面,该页面显示您的分支和octocat/Spoon-Knife
代码库之间的差异。单击创建拉取请求。
GitHub 将带您进入一个页面,您可以在其中输入更改的标题和描述。务必提供尽可能多的有用信息以及您首先创建此拉取请求的原因。项目所有者需要能够确定您的更改是否像您认为的那样对每个人都有用。最后,单击创建拉取请求。
管理反馈
拉取请求是讨论的区域。如果项目所有者拒绝您的拉取请求或要求提供更多有关创建此请求的原因的信息,请不要生气。即使项目所有者选择不合并您的拉取请求,您的更改仍然存在于您的分支中。其他人可能会发现您的分支比原始项目更有价值。
查找项目
您已成功创建分支并为代码库做出了贡献。继续前进,贡献更多!更多信息,请参见“在 GitHub 上寻找为开源项目贡献代码的方法”。