🇯🇵 日本語 | 🇺🇸 English | 🇪🇸 Español | 🇵🇹 Português | 🇹🇭 ไทย | 🇨🇳 中文

如何在 GitHub 上使用评论和审查功能(代码审查简介)

在上一篇文章中,您使用 `Fork` 和 `Pull Request`,迈出了为他人项目做贡献的第一步。但是,仅仅发送一个 Pull Request 并不意味着开发工作的结束。这才是团队开发真正乐趣的开始:代码审查

代码审查是其他开发人员检查您编写的代码并提供反馈的过程。通过这个过程,可以及早发现错误,学习更好的编码方式,并提高整个团队的代码质量。本文将详细解释如何在 GitHub 上进行顺畅的沟通,以及如何有效使用评论和审查功能来进行代码审查


代码审查的基础:在 Pull Request 上的沟通

代码审查的核心場所是您创建的 Pull Request 页面。此页面汇总了有关您所做更改的所有信息,这里的沟通将直接影响项目的质量。

GitHub 的审查功能主要分为两种:

通过灵活运用这两种功能,可以实现顺畅的沟通。


评论功能的具体用法

首先,让我们来看看可以轻松使用的评论功能。

1. 对整个 Pull Request 的评论

如果您想就整个变更提出一般性问题或表示感谢,可以使用 Pull Request 页面底部的评论区。它位于“Conversation”选项卡的最下方。

[图片:Pull Request 页面底部评论输入框的屏幕截图]

在文本区域输入消息,然后点击“Comment”按钮即可发布。输入 `@用户名` 还可以向特定人员发送通知(提及)。

2. 对特定代码行的评论

代码审查中最常用的功能是行级评论。它非常适合提出具体的指正,例如“这部分变量的名称是不是可以更清晰易懂一些?”

  1. 在 Pull Request 页面上,点击“Files changed”选项卡。
  2. 将显示已更改文件的列表,将鼠标悬停在您想评论的代码行左侧。
  3. 会出现一个蓝色的“+”图标,点击它。
  4. 将出现一个文本框,输入您的评论,然后点击“Start a review”按钮。

[图片:在“Files changed”选项卡中为特定行添加评论的场景]

此时,您的评论仍处于“待处理 (Pending)”状态。通常的做法是先集中提出多个指正,最后再作为一次审查统一提交。

3. 建议更改功能 (Suggestion)

如果您想提出具体的代码修改建议,例如“这样改写会更好”,可以点击评论框上方的“Insert a suggestion”图标(一个 `+/-` 样式的标记)。这样会插入一个代码块,您可以在其中直接编写您的修改方案。

[图片:在评论框中使用“Insert a suggestion”功能提出代码修改建议的场景]

使用此功能,Pull Request 的创建者只需点击一个按钮,就能将您的建议应用到代码中,非常方便。


提交审查:批准还是请求更改

在写了多条评论后,最后将它们汇总成一次“审查”并提交。请点击屏幕右上角显示的“Review changes”按钮。

[图片:指向“Review changes”按钮的场景]

之后,将显示以下三个选项:

[图片:显示了审查提交时三个选项(Comment, Approve, Request changes)的模态窗口]

选择适当的选项,如果需要,可以填写总结性评论,然后点击“Submit review”按钮。这样,您的审查就正式提交了,Pull Request 的创建者会收到通知。


回应审查:修改并重新推送

反过来,我们来看看当您是 Pull Request 的创建者,并收到了他人的审查时应该如何应对。

步骤1:确认评论内容并进行讨论
首先,对收到的指正表示感谢。如果有不明白的地方,可以回复并提问。所有的沟通都会作为记录保留在 Pull Request 上。

步骤2:根据指出的问题修改代码
如果您同意审查者的指正,就在您自己的本地计算机上修改代码。例如,创建一个像 `fix-review-comments` 这样的新分支来处理会更加规范。

步骤3:推送额外的提交
修改完成后,创建一个新的提交,并将其推送到发起 Pull Request 的分支(例如 `fix-typo-in-readme`)。

git commit -m "Reflect review comments"

git push origin fix-typo-in-readme

当您推送新的提交后,该更改会自动反映在 Pull Request 中。无需重新创建一个新的 Pull Request。

步骤4:解决已处理的对话
在处理完所有指正后,点击每条评论下方的“Resolve conversation”按钮,将对话标记为已解决。这样,哪些指正已处理就一目了然了。

[图片:“Resolve conversation”按钮被点击后,对话被折叠的场景]

当所有对话都已解决,并再次获得审查者的“Approve”后,就终于可以合并了。