拉取请求审查
如果你被选中进行审查,你可以对许多更改发表评论、提出建议,并最终使用以下之一来提交你的审查意见:
-
评论
-
批准
-
请求更改
在上一节中,我重点介绍了与拉取请求作者相关的功能。在本节中,我将描述一个帮助审查者进行审查并向作者提供适当反馈的功能。
在拉取请求中审查提议的更改
你可以通过一次查看一个文件的更改来开始你的审查。如果你将鼠标悬停在行上,你会看到左侧的 +
图标。你可以使用它添加单行评论,或者通过拖动它选择多行,创建多行评论。如果你有评论,选择 “开始审查” 来开始审查过程,但还不提交评论。如果你添加更多评论,按钮会变为 “添加审查评论”;你可以在审查中添加任意数量的评论。评论在你提交审查之前仅对你可见!你可以随时取消审查。
将文件标记为已查看
在审查时,你会在文件顶部看到一个进度条。当你完成一个文件的审查后,可以选择 “已查看” 复选框。该文件将被折叠,进度条将显示进度(见图 3.14)。

实践——提出建议
最佳的反馈方式是通过提出建议,作者可以轻松地将这些建议集成到他们的分支中。这个功能非常重要,值得尝试一下,如果你从未使用过。下面是操作步骤:
-
打开你在之前实践中创建的仓库的 fork:
https://github.com/<你的用户名>/AccelerateDevOps
。在 fork 中,导航到 Chapter 3 | Review Changes (ch3_pull-request/Review-Changes.md)。该文件还包含了操作说明,方便你在浏览器和书本之间无需频繁切换。
点击代码块右上角的复制图标,复制示例源代码。
-
导航到 src/app.js(通过 markdown 链接)。选择你在之前操作中创建的分支,然后点击右上角的编辑图标(铅笔图标)(见图 3.15):
Figure 2. 图 3.15 – 编辑代码文件以添加示例代码 -
删除第 2 行,并按 Ctrl + V 粘贴代码。
-
直接提交到你 pull request 的源分支。
-
返回到 pull request,查找 Files changed 下的
src/app.js
。注意,第 6 行到第 9 行的嵌套循环没有正确缩进。选中第 6 到第 9 行并创建一个多行评论。点击 Suggestion 按钮,你会看到代码已经被放入建议块中,包括空格(见图 3.16):Figure 3. 图 3.16 – 为多行评论创建建议 -
注意,建议代码块包含完整的代码,包括空格。在每一行的开头添加四个空格,以修正缩进。你可以将建议作为评论的一部分添加到评审中(点击 “开始评审”),或者直接将建议提交给作者(点击 “添加单个评论”)。在本次实践中,我们将建议作为单个评论添加。
将反馈融入到拉取请求中
由于你既是审阅者又是作者,你可以直接切换角色。作为作者,你可以看到所有针对你的拉取请求的建议。
你可以直接将建议提交到你的分支,或者将多个建议合并到一个提交中,然后一次性提交所有更改。将更改添加到批次中,并在文件顶部应用批次(见图 3.17):

建议是提供反馈和建议代码更改的好方法。它们对于作者来说非常容易整合到代码中。
提交审查
如果你已经完成了审查并添加了所有评论和建议,你可以提交审查结果。作者将会收到结果通知,并可以回复你的评论。你可以留下最终评论,并选择以下三种选项之一:
-
Approve:批准更改。这是唯一会计算在所需审查员数量中的选项!
-
Comment:提交反馈,但不做批准或拒绝。
-
Request changes:表示需要更改才能获得你的批准。
完成审查后,点击 提交审查(见图 3.18)。

完成拉取请求
如果你想放弃在分支上的更改,可以关闭一个拉取请求而不进行合并。要将你的更改合并到目标分支中,你有三种合并选项,如下所述:
-
创建一个合并提交(Create a merge commit):这是默认选项。它会创建一个合并提交,并将你的分支中的所有提交作为一个独立的分支显示在历史记录中。如果你有很多长时间运行的分支,这可能会使历史记录显得杂乱。你可以在此处看到该合并选项的表示:
Figure 6. 图 3.19 – 使用合并提交时的 Git 历史 -
压缩并合并(Squash and merge):所有分支中的提交将合并成一个提交。这会创建一个干净的线性历史,如果你在合并后删除分支,这是一个不错的合并方法。如果你继续在该分支上工作,不推荐使用这种方法。你可以在此处看到该合并选项的表示:
Figure 7. 图 3.20 – 使用压缩并合并时的 Git 历史 -
变基并合并(Rebase and merge):将该分支的所有提交应用到目标分支的头部。这也会创建一个线性历史,但保留了每个单独的提交。如果你继续在该分支上工作,这种方法也不推荐使用。你可以在此处看到该合并选项的表示:
Figure 8. 图 3.21 – 使用变基并合并时 Git 历史看起来是线性的
选择你想要的合并方法并点击 合并拉取请求(Merge pull request)(见图 3.22):

修改合并消息并点击 确认合并(Confirm merge)。合并后,如果你想,你可以删除该分支。