在 GitHub 上为项目做贡献是开发者和协作者共同实现目标的必备技能。无论是修复漏洞、添加功能还是改进文档,贡献过程都能够确保协作结构化且高效。
通过遵循 GitHub Flow:Fork 仓库、创建分支、提交拉取请求,你可以对项目提出更改并获取反馈,而不会干扰他人的工作。
本指南提供了使用 GitHub UI 和命令行为项目做贡献的说明。有关使用 GitHub Desktop 贡献的更多信息,请参阅 在 GitHub Desktop 中克隆和 Fork 仓库。关于 GitHub CLI(命令行界面)的相同操作,请参阅 GitHub CLI 快速入门。
关于 Fork
如果你想为他人的项目做贡献,但没有直接修改的权限,你可以创建该项目的副本,进行更新,然后建议将这些更新合并到主项目中。该过程通常称为 “fork and pull request”(Fork 与拉取请求)工作流。
当你创建项目的副本(即 “fork”)时,就相当于创建了一个与原项目共享代码的新工作区。这在开源项目或任何没有写入权限的情况下都非常有用。
一旦在你的副本中完成更改,你可以将其提交为拉取请求,这是一种向主项目提出更改的方式。更多信息请参阅 Fork 仓库。
创建项目的副本
本教程使用 Spoon‑Knife 项目,它是托管在 GitHub 上的测试仓库,可用于测试 Fork 与拉取请求工作流。
-
前往
Spoon-Knife项目,地址为 https://github.com/octocat/Spoon-Knife。 -
在页面右上角,单击 Fork。

-
在 “Owner” 下,打开下拉菜单并选择 Fork 后仓库的拥有者。
注意
如果你的用户名呈灰色显示,说明该 Fork 已经存在。此时应将已有的 Fork 更新到最新。更多信息请参阅 同步 Fork。
-
默认情况下,Fork 的名称与其上游仓库相同。若想进一步区分你的 Fork,可在 “Repository name” 字段中输入自定义名称。
-
可选地,在 “Description” 字段中输入对你的 Fork 的描述。
-
可选地,选中 仅复制默认分支(DEFAULT)。
在许多 Fork 场景(如为开源项目贡献)中,你只需复制默认分支。如果不选此项,则所有分支都会复制到新 Fork 中。
-
单击 Create fork。
注意
如果想复制上游仓库的其他分支,可在 Branches 页面进行操作。更多信息,请参阅 在仓库内创建和删除分支。
将 Fork 克隆到本地电脑
你已经成功 Fork 了 Spoon‑Knife 仓库,但目前它仅存在于 GitHub 上。要在本地进行开发,需要将其克隆到你的电脑上。
你可以使用命令行、GitHub CLI 或 GitHub Desktop 克隆你的 Fork。
-
在 GitHub 上,前往 你的 Fork(即 Spoon‑Knife 仓库)。
-
在文件列表上方,点击 代码。

-
复制该仓库的 URL。
-
要使用 HTTPS 克隆仓库,请在“HTTPS”下点击.
-
要使用 SSH 密钥克隆仓库(包括由您组织的 SSH 证书颁发机构签发的证书),点击 SSH,然后点击.
-
要使用 GitHub CLI 克隆仓库,点击 GitHub CLI,然后点击.

-
-
在 macOS 或 Linux 上,打开终端;在 Windows 上,打开 Git Bash。
-
将当前工作目录切换到希望放置克隆目录的位置。
-
输入
git clone,随后粘贴之前复制的 URL。它的形式类似于下面这样,只需将其中的YOUR-USERNAME替换为你的 GitHub 用户名。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 Flow,并确保以后再次对同一项目贡献时更加方便。参见 GitHub Flow。
git branch BRANCH-NAME
git checkout BRANCH-NAME
进行更改并推送
使用你喜欢的文本编辑器(例如 Visual Studio Code)对项目进行一些修改。例如,你可以修改 index.html 中的文字,添加你的 GitHub 用户名。
准备提交更改时,需要先暂存并提交。git add . 告诉 Git 将所有更改加入到下一个提交中。git commit 会为这些更改创建一个快照。
git add .
git commit -m "a short description of the change"
当你暂存并提交文件时,实际上是告诉 Git “对我的更改拍摄快照”。之后你可以继续进行更多更改并创建更多提交快照。
当前你的更改仅在本地。准备将更改推送到 GitHub 时,只需将它们推送到远程仓库。
git push
创建拉取请求
创建拉取请求是对他人项目进行 Fork 后的最后步骤。当你完成有价值的更改并希望将其提交到原始仓库时,需要创建拉取请求供维护者审阅。
为此,请前往存放你项目的 GitHub 仓库。以本例为例,地址为 https://github.com/<your_username>/Spoon-Knife。你会看到一个横幅,提示你的分支比 octocat:main 超前一个提交。点击 Contribute(贡献),然后点击 Open a pull request(打开拉取请求)。
GitHub 会打开一个页面,展示你的 Fork 与 octocat/Spoon-Knife 仓库之间的差异。点击 Create pull request(创建拉取请求)。
GitHub 会打开一个页面,你可以在其中输入更改的标题和描述。请务必提供尽可能多的有用信息以及你发起此拉取请求的理由。项目所有者需要判断你的更改是否对所有人都有价值。最后,点击 Create pull request(创建拉取请求)。
熟悉项目
如果你对项目还不熟悉,可以使用 Copilot 来帮助你了解仓库的目的、检查文件以及深入特定代码行。参见 使用 GitHub Copilot 探索项目。