像专业人士一样提交拉取请求:创建高质量拉取请求的技巧

2025-06-10

像专业人士一样提交拉取请求:创建高质量拉取请求的技巧

随着 Hacktoberfest 即将到来,这里有一些提示,可帮助您为下一次开源贡献做出更好的 Pull 请求。

作为开源项目的维护者和贡献者,这些是我在审查时寻找并在提交 Pull 请求时要注意的事情。

这篇文章读起来很快,但如果您想要读得更快,请查看此 Twitter 帖子

提示 1:贡献文档是你最好的朋友

大多数开源项目都有一个贡献文档(通常是repo 根目录中的CONTRIBUTING.md文件),其中包含有关如何设置开发环境、必须遵循的编码约定等所有必要的详细信息。

如果您希望为某个项目做出贡献,那么这应该是在阅读 ReadME文件之后要查看的下一个地方。

GitHub 上 Meshery 项目贡献指南的屏幕截图。
Meshery项目的贡献文档

提示 2:记录你的 PR

这真的很重要。我再说一遍,这真的很重要。

您应该使审核过程尽可能简单,并且审核者应该能够快速浏览一下您的 PR 的内容。

为此,您可以:

  • 编写自文档代码(什么是自文档代码?它有什么用?请参阅这个精彩答案
  • 在代码中自由使用注释
  • 写出清晰的提交信息
  • 最重要的是,清楚地评论你的 PR 的作用

如下所示,PR 描述显示了它修复了哪些问题、PR 中所做的更改以及实际的新用户体验。

这使得 PR 非常容易审查。

来自 GitHub 的拉取请求描述的屏幕截图,展示了如何记录您的 PR。

拉取请求描述示例

提示 3:使用拉取请求模板

大多数开源项目都会有一个 Pull Request 模板来指导新手和老手正确记录他们的 PR。

正如您在下面看到的,PR 模板包含一些部分,贡献者需要在其中填写详细信息。

来自 Microsoft 的 Open Service Mesh 项目的拉取请求模板的屏幕截图。
来自Open Service Mesh项目的 Pull Request 模板

这将使审阅者的工作变得更加容易,因为他们可以轻松地进行测试,请领域专家进行审阅等等。

这些也像是一个清单,贡献者可以勾选。例如:“我是否编写了单元测试?”,“我是否签署了所有提交?”,“这是一个重大变更吗?”等问题,都可以在开始填写模板时回答。

提示 4:让你的 PR 简短而专注

只要有可能,你的 Pull 请求就应该只做一件事。

在单个 PR 中解决多个问题的问题在于,审阅者可能不会同意所有的更改,这可能会导致长时间的讨论。

因此,小而集中的 PR 会减少审核所需的时间,并使您的 PR 最有可能被合并。

这张屏幕截图显示了 GitHub 中专注于一件事的拉取请求。
仅包含单一、重点变更的 Pull 请求示例

提示 5:添加测试

如果您正在进行的项目有自动化测试,那么请确保为您添加的代码添加测试。

不确定是否应该编写测试?这里有一个额外提示

如果可以测试,就应该测试。

提示 6:确保自动化测试通过

大多数项目在其 CI/CD 管道中都有自动化测试,这些测试在您的 Pull 请求上运行。

这些测试是为了确保你添加的代码能够通过一些约束。这些测试主要包括 Lint 检查、构建检查、单元测试和集成测试。

如果这些检查没有通过,请修复它并确保所有测试都通过,然后再要求审核。

如果这些检查失败,您的代码就不太可能被合并。

这张屏幕截图显示了 GitHub 中专注于一件事的拉取请求。

所有檢查已通過!

提示 7:回应反馈

当您打开 Pull Request 时,您也在开启关于为什么需要进行此更改以及为什么您的 PR 是添加该更改的正确方法的讨论。

因此,请确保您对评论做出回应,根据评论者的建议对您的 PR 进行更改,并在需要时提出澄清问题。

这将确保您和审阅者达成共识,并使 PR 审阅变得更加容易。

这张屏幕截图显示了 GitHub 中专注于一件事的拉取请求。
有时讨论会很长!但当你添加一个有重大改变的新功能时,这些是必要的。

提示 8:要有耐心

大多数开源维护者都是志愿者,他们利用工作之余的空闲时间来维护项目。

因此,他们可能需要一些时间来获取您的 PR 并进行审核。

所以,耐心点,等他们忙完。休息一下,喝杯咖啡,看看《火影忍者》。

额外提示:

我将在DEV 社区以及Twitter我的博客上撰写有关贡献、构建、扩展和维护开源项目的文章

在过去的一年里,我从一个开源贡献新手变成了:

我愿意分享我所学到的一切,以帮助尽可能多的对开源感兴趣的人。

因此,请继续关注,愿源头与你同在!

鏂囩珷鏉yu簮锛�https://dev.to/pottekkat/pull-requests-like-a-pro-tips-to-make-high-quality-pull-requests-2hfk
PREV
CSS 艺术创作简介
NEXT
我们如何成为 GitHub 上排名第一的热门存储库