为开源存储库做出贡献

已完成

在确定了可以做出贡献的方面后,下一步是准备贡献。 我们将在此处了解如何传达参与项目的意图,形成拉取请求,并提高其被接受的机会。

当涉及到开源项目的贡献工作时,沟通是一个关键的成功因素。 你可能会发现,就你提出的更改或改进与他人进行沟通时,你会感到不自在。 通常,此对话框会导致对你最初愿景的讨论和妥协。

不与开源项目中的其他人积极沟通意味着会有浪费时间处理其他人已在处理的任务的风险。 或者你可能会在与项目目标或最佳做法不相符的功能和改进上花费时间。 这两种情况都会浪费你的时间。 相反,致力于积极沟通可确保你的工作深受认可并产生影响。

与其他项目成员就新功能和更改进行沟通时,如何确保成功? 首先,尽量保持开放的心态。 善于接纳反馈,并保持耐心。 开源项目的维护人员通常都有自己的日常工作和私人生活。 如果没有立即获得答案,在 ping 维护人员之前请稍等一段时间(或更长时间)。

向维护人员传达意图

在做任何实际工作之前,你始终应该首先传达你的贡献意图。 除非在 README 文件中另有说明,否则问题跟踪器通常是执行此操作的最佳位置。

  • 如果要处理某个现有问题,请查看“代理人”部分检查是否已有人员分配到此问题。 另请查看“链接的拉取请求”部分。 链接的拉取请求表示有人已经在处理该请求。 查看评论,看看是否有人表达了对处理该问题的兴趣。 如果一切都清楚,请发布有关该问题的评论,表明你有兴趣处理该问题。 通过这种方式可让稍后可能会来的其他人知晓有人正在处理此问题。 另外,如果需要,维护人员会回复你并提供指南和建议。

    屏幕截图显示代理人和链接的拉取请求部分。

  • 如果要处理新功能或问题跟踪器中尚未存在的 bug,则创建新问题。 如果提出了一个问题模板,请确保遵循该模板,并清楚地表达你处理该问题的意图。 如果这是一个新功能建议,或者如果问题需要许多更改,请确保在进入下一步之前获得维护人员的批准。

在 GitHub 存储库中创建拉取请求

在传达了帮助项目的意图后,就可以开始进行实际的贡献了。

你的贡献将采用“拉取请求”(即“PR”)的形式。 拉取请求是 GitHub 上的特殊位置,其中包含一些内容:

  • 更改的标题和说明。
  • 构成你提议的更改的一个或多个提交。
  • 每个人都可以用于参与更改讨论的评论。
  • 代码评审,你可在其中找到有关更改的详细反馈,并最终提交建议。
  • 状态检查(例如,这可能来自维护人员可能已实施的自动测试)。 状态检查可用于不同的目的。 例如,他们可确保所做的更改遵循项目的规则,或者你的更改不会破坏代码。

创建拉取请求后,可以使用新的提交、注释或代码评审对其进行更新。 此过程将持续进行,直到项目维护人员批准和合并拉取请求或拒绝更改并关闭拉取请求。 若拉取请求被合并,这意味着你的更改已集成到项目的代码库中。

逐步创建拉取请求

  1. 打开要做出贡献的项目的 GitHub 页面。

  2. 选择“分支”按钮,在 GitHub 帐户中创建存储库的副本。 此步骤是必要的,因为默认情况下你没有权限对公共存储库进行任何更改,除非它是你自己的副本。 通过创建项目的分支,你将创建一个副本,可以对它进行更改。

    屏幕截图显示 GitHub 项目的“分支”按钮。

  3. 从帐户配置文件菜单中选择“你的存储库”。

    显示配置文件下拉菜单和名为“你的存储库”的条目的屏幕截图。

  4. 选择存储库分支。

  5. 选择“代码”按钮,获取有关如何将 Git 存储库克隆到本地计算机的信息。

    屏幕截图显示用于克隆 GitHub 项目的选项。

  6. 选择“剪贴板”图标以复制存储库 URL,然后在终端中输入:

    git clone <REPOSITORY_URL>
    

    此命令将在本地计算机上创建存储库的副本。

    或者,如果想要使用应用程序,可以使用 GitHub 桌面。 如果收到了相关建议,还可以使用 GitHub Codespaces。 如果你是 Visual Studio Code 用户,你会对 GitHub Codespaces 感到熟悉。

  7. 项目完成克隆后,输入项目文件夹:

    cd <PROJECT_FOLDER>
    
  8. (可选)使用以下命令创建新分支:

    git checkout -b <BRANCH_NAME>
    

    此步骤不是必需的,但强烈推荐。 通过新的分支,你可以分别处理多个贡献,每个贡献使用不同分支。

  9. 对项目进行所需更改,并提交它们:

    git add .
    git commit -m "<COMMIT_MESSAGE>"
    

    这些命令将暂存更改以进行提交,然后使用指定的消息创建一个提交。 请务必在提交消息中准确描述你的更改。 检查 CONTRIBUTING 文件中是否存在你需要遵循的提交消息约定也是一个不错的主意。

  10. 使用以下命令将更改推送到远程库:

    git push --set-upstream origin <BRANCH_NAME>
    

    此命令在 GitHub(你的分支)的上游存储库上创建一个新分支,并将所有提交推送到该分支。

    注意

    当我们谈论上游存储库时,指的是链接到本地存储库的远程存储库。 origin 是存储库 URL 的默认别名,由 Git 在步骤 4 中创建。

    如果你之前未创建分支,请仅输入 git push

  11. 打开 GitHub 上的项目分支,并在出现的建议框中选择“比较和拉取请求”按钮

    屏幕截图显示 GitHub 上的拉取请求建议框。

  12. 填写标题和说明,然后选择“创建拉取请求”。

    屏幕截图显示拉取请求创建界面。

    如果有拉取请求说明的模板,请花时间填写所有必需的信息。 如果现在没有,请确保提供足够的上下文,让维护人员了解你建议的更改以及原因。 还应使用 #<ISSUE_NUMBER> 提及相关问题的编号,以链接回相关问题。 你可以在问题标题旁找到问题编号。

    屏幕截图显示问题编号。

传递状态检查

创建拉取请求后,你可能会在底部看到一个带有状态检查的部分,如下所示:

屏幕截图显示拉取请求的状态检查结果。

这些状态检查是维护人员为确保项目质量一致而设置的自动检查。

若要使拉取请求被接受,它需要通过所有自动检查。 如果一个检查失败(如以上屏幕截图所示),请选择“详细信息”按钮了解有关失败的详细信息,找出修复它所需的操作。

如果你不确定如何处理失败的检查,则始终可以使用评论,请求维护人员指导或帮助修复它。

请求有关拉取请求的指导或评审

你可能不确定所做的某些更改,并希望获取维护人员的意见。 执行此操作的最佳方法是直接对拉取请求进行注释。 如果你认为你的更改正在进行中,还可以选择创建草稿拉取请求,而不是向其他参与者寻求指导或帮助。

屏幕截图显示草稿拉取请求选项。

项目维护人员收到你的拉取请求后,他们可以回复对话或直接查看你的更改。 拉取请求评审后有多种可能的结果:

  • 你的更改已获批准。 祝贺你!
  • 你的拉取请求需要进行一些更改。 不要气馁! 仔细查看提供的反馈。 如果你执行了要求的更改,则你的拉取请求很有可能会被接受。 如果你将新提交推送到分支,拉取请求将自动随着新更改而更新。
  • 审阅者进行了一些评论。 它通常意味着需要更多关于你的更改或背后的动机的细节。

回复拉取请求的评论

记住,在所有的交流中要始终尊重他人,并遵循行为准则。 在你的更改被接受之前,你很可能会与维护人员或其他参与者进行持续的讨论。

参与开源项目需要耐心。 有时你不会获得即时反馈。 请勿为了更快地获得答复而通过电子邮件、X 或任何其他方式与维护人员私下联系。 这被认为是有害的行为。 公开讨论事情也让其他参与者或路人有机会了解更改背后的过程以及要遵循的最佳做法。