跳至主要内容

为项目做贡献

了解如何通过 Fork 为项目做贡献。

在 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 与拉取请求工作流。

  1. 前往 Spoon-Knife 项目,地址为 https://github.com/octocat/Spoon-Knife

  2. 在页面右上角,单击 Fork

    Screenshot of the main page of repository. A button, labeled with a fork icon and "Fork 59.3k," is outlined in dark orange.

  3. 在 “Owner” 下,打开下拉菜单并选择 Fork 后仓库的拥有者。

    注意

    如果你的用户名呈灰色显示,说明该 Fork 已经存在。此时应将已有的 Fork 更新到最新。更多信息请参阅 同步 Fork

  4. 默认情况下,Fork 的名称与其上游仓库相同。若想进一步区分你的 Fork,可在 “Repository name” 字段中输入自定义名称。

  5. 可选地,在 “Description” 字段中输入对你的 Fork 的描述。

  6. 可选地,选中 仅复制默认分支(DEFAULT)

    在许多 Fork 场景(如为开源项目贡献)中,你只需复制默认分支。如果不选此项,则所有分支都会复制到新 Fork 中。

  7. 单击 Create fork

注意

如果想复制上游仓库的其他分支,可在 Branches 页面进行操作。更多信息,请参阅 在仓库内创建和删除分支

将 Fork 克隆到本地电脑

你已经成功 Fork 了 Spoon‑Knife 仓库,但目前它仅存在于 GitHub 上。要在本地进行开发,需要将其克隆到你的电脑上。

你可以使用命令行、GitHub CLI 或 GitHub Desktop 克隆你的 Fork。

  1. 在 GitHub 上,前往 你的 Fork(即 Spoon‑Knife 仓库)。

  2. 在文件列表上方,点击 代码

    Screenshot of the list of files on the landing page of a repository. The "Code" button is highlighted with a dark orange outline.

  3. 复制该仓库的 URL。

    • 要使用 HTTPS 克隆仓库,请在“HTTPS”下点击.

    • 要使用 SSH 密钥克隆仓库(包括由您组织的 SSH 证书颁发机构签发的证书),点击 SSH,然后点击.

    • 要使用 GitHub CLI 克隆仓库,点击 GitHub CLI,然后点击.

      Screenshot of the "Code" dropdown menu. To the right of the HTTPS URL for the repository, a copy icon is outlined in dark orange.

  4. 在 macOS 或 Linux 上,打开终端;在 Windows 上,打开 Git Bash。

  5. 将当前工作目录切换到希望放置克隆目录的位置。

  6. 输入 git clone,随后粘贴之前复制的 URL。它的形式类似于下面这样,只需将其中的 YOUR-USERNAME 替换为你的 GitHub 用户名。

    git clone https://github.com/YOUR-USERNAME/Spoon-Knife
    
  7. 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 探索项目

© . This site is unofficial and not affiliated with GitHub, Inc.