尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

GitHub Pull Request查看指南:从入门到实操

发布时间:2026/9/29 22:56:33

资讯中心
01
ARTICLE

GitHub Pull Request查看指南:从入门到实操

GitHub Pull Request查看指南:从入门到实操
PR在哪看这是最近一位刚开始参加开源协作的同事问我的第一句话。在GitHub上日常泡了这么多年这个问题对我来说几乎是本能的但对新人来说PR这个入口其实并没有想象中那么显眼。很多人听说过Pull Request也知道代码合入主干前需要走PR流程但真正打开GitHub的仓库页面时面对一排英文标签完全不确定该点哪里点进去之后又看到一大串状态、分支、检查记录很容易一下子就蒙了。这篇文章正好借这个小问题记录的契机把我平时在GitHub上查看PR的完整路径和经验梳理一遍从入口到详情页从网页到命令行把常见坑一并讲清楚给刚接触GitHub的开发者一个可以直接照着用的参考。说是小问题真展开来写里面的门道其实不少。1. 先搞懂PR到底是什么为什么要学会看1.1 PR在GitHub协作中的定位Pull Request简称PR的核心逻辑其实不复杂你把改动推送到一个远端分支然后向目标分支的维护者发起一个请求——请把我的代码合并进去。这个动作本身只是一次点击但GitHub把它包装成了一个完整的协作流程改动内容、提交历史、讨论记录、审查结论、自动化检查结果甚至合并时采用哪种策略全部沉淀在同一个页面里。如果把代码仓库想成一家餐厅的菜单PR就是厨师提上来的一道新菜方案。你不能只把菜往桌上一放还得附上配方、成本、试吃报告和可能存在的风险说明让主厨和品鉴团逐项确认。整个过程公开透明谁提了什么意见、谁后来改了什么都有迹可循。对于开源项目来说PR几乎是所有贡献进入主线的唯一通道对于公司内部的团队协作PR则是代码审查和变更追溯的主要载体。对一个普通开发者来说学会看PR至少能带来几个实实在在的好处第一你能快速了解一个项目最近在做什么改进哪些改动已经合入主分支第二你能参与审查同事或社区成员的代码让改动质量更可控第三当你自己发起PR后你能准确判断它处于什么阶段离合并还差哪几步第四想参与开源贡献时fork PR这条路是绕不开的。可以说看懂PR页面是每个GitHub使用者迟早要跨过的一道门槛。1.2 看懂PR状态和生命周期很多新人第一次打开PR列表会被一堆状态标签搞晕。其实一个PR从诞生到结束只有几种状态用一张表就能说清楚状态含义能否合并常见场景Open已提交正在讨论或审查中无冲突时可以新功能、Bugfix待审Draft草稿作者认为还没准备好不能合并半成品提前同步思路Merged已成功合入目标分支已完成改动已进入主干Closed已关闭但未合并未合并放弃改动或需要另开PRDraft这个状态值得单独说一下。GitHub推出Draft PR是为了让开发者可以先发一版半成品让团队成员提前看到方向避免写到一半发现大方向错了。我印象很深的一次是同事建好PR之后一直停留在DraftCI检查已经跑完了团队其他人都在等最终审查但他忘了把状态改成Ready for review。那个按钮就在PR页面右侧偏下的位置非常容易忽略。所以如果你看到某个PR灰灰的、不能点合并按钮先看看它是不是Draft。另外还要注意一个容易混淆的细节同一个仓库里Issue和PR共用一套递增编号。比如你先创建了Issue #5那么下一个创建的PR编号很可能就是#6。这意味着别人提到#123时它可能是一个PR也可能是一个Issue。点进去之后看URL/pull/表示PR/issues/表示Issue确认一下就不会弄错。2. GitHub上查看PR的六个入口2.1 从仓库首页进入PR列表最常规、也最适合新手的入口就是仓库首页的横向标签栏。打开任意一个仓库页面比如 https://github.com/owner/repo在代码文件列表上方可以看到一排TabCode、Issues、Pull requests、Actions、Projects、Wiki、Security。点击Pull requests就进入了这个仓库的全部PR列表。这个列表的每一行信息其实非常丰富包括PR标题、编号、创建者、标签、当前审查状态、最后更新时间以及它指向的源分支和目标分支。默认情况下展示的是所有Open状态的PR顶部通常有Filters选项可以切换查看Closed或Merged的记录。有些仓库的首页会自定义成一个很炫的README而不是默认的代码文件列表遇到这种情况别慌横向标签栏依然在那排导航里位置没有变。2.2 通过PR链接直达这是我认为效率最高的入口。GitHub的PR地址格式是固定的https://github.com/{owner}/{repo}/pull/{PR编号}比如我维护的一个小工具项目有用户提了PR我会直接在浏览器地址栏输入仓库名加/pull/18这样跳过去。这个方法尤其适合处理外部反馈对方在邮件、群聊或Issue里提到PR #18你不用去列表里一个个翻直接改URL就好。这个链接还能加后缀跳到指定区域。想看这个PR包含的所有提交就访问 /pull/18/commits想直接看文件diff就访问 /pull/18/files想查看CI检查状态加 /pull/18/checks。另外在查看diff时你还可以在URL后面拼上 ?diffsplit 或 ?diffunion切换左右分栏还是上下合并的显示方式。这些都是我平时常用的快速定位手法。2.3 从通知中心进入很多人并不是主动去仓库里找PR的而是被GitHub的消息通知带过去的。页面右上角的铃铛图标就是Notifications中心。当你被提到、被指派为Reviewer、订阅了某个PR或者你维护的仓库里有新提交和评论时都会在这里收到提醒。点一下对应条目浏览器会直接跳转到PR中的相关位置比手动进入省不少事。这里有一个很值得养成的习惯在PR页面右侧点一下Subscribe按钮订阅这个PR的后续动态。以后任何人在这个PR里留言、推送新提交、提交审查意见你都会收到通知。对需要持续跟进某次讨论的人来说这个按钮比一遍遍刷新页面靠谱得多。我处理长期分支PR时一般都会先订阅再去做别的事情等通知了再回来看。2.4 从个人主页的聚合入口进入当一个人参与多个仓库、同时维护多个项目时逐个仓库看PR效率太低。GitHub为这种情况准备了聚合入口打开 https://github.com/pulls会列出所有和你相关的PR包括你发起的、你参与评论的、以及等待你审查的。点击右上角头像后在菜单里也能找到指向同一个页面的快捷方式。这个聚合页面支持强大的筛选语法我每天早上打开它时通常会配合这些过滤条件is:pr is:open 只看打开中的PRis:pr is:merged 只看已合并的PRinvolves:me 看与我相关的PRreview-requested:me 只看等待我审查的PR通过这种方式晨会前扫一眼就能知道自己待办列表里有哪些PR需要处理不用在十几个仓库之间来回切换。2.5 用GitHub CLI在终端查看PR命令行用户可以用GitHub官方CLI工具gh来查看PR安装并登录之后常用命令其实就那么几条# 列出某个仓库的PR gh pr list --repo owner/repo # 查看指定PR的详情 gh pr view 18 --repo owner/repo # 连同评论一起看 gh pr view 18 --comments --repo owner/repo # 查看我发起的所有PR gh pr list --author me我一般在做代码审查时会先用gh pr view把某个PR的标题、描述、关联分支快速搞清楚再用浏览器打开PR页面看Files changed。命令行和网页各自有不可替代的优势命令行适合脚本化和快速扫描网页适合沉浸式逐行审阅。另外gh pr list支持--json参数输出结构化数据想统计团队PR情况、做自动化报告的朋友可以直接把数据导出来用。2.6 从提交、Actions等页面反查PR最后一个入口比较隐蔽但非常实用GitHub上很多页面都藏着指向PR的链接。比如你点开某次commit的详情页如果这个commit来自某一个PR页面里通常会显示关联的#编号链接GitHub Actions的运行记录也会关联触发它的PR在Issue或Discussion里输入#123这样的编号系统会自动把它转换成指向对应Issue或PR的链接。这个机制的价值在于你可以从任意一个点顺藤摸瓜找到背后完整的PR上下文。记得有一次我在审计一个安全隐患时看到某个奇怪的commit hash点进去后发现它来自一个很久之前的PR顺着PR又找到了当时完整的讨论和修复过程非常方便。对代码追溯来说PR页面的长期留存能力是一笔很大的财富。3. 拆解PR详情页每一栏都是什么3.1 Conversation整个PR的时间线打开一个PR后默认停留在Conversation标签这是PR最主要的互动区。页面顶部是PR的标题、描述和当前状态右侧栏显示了Assignees指派人员、Labels标签、Projects、Milestone、Reviewers等信息。往下滚动能看到完整的时间线所有评论、审查提交、commit推送、检查状态变化、分支更新都按时间顺序排列。这个时间线是对PR全过程的真实记录。你可以从一个只有几百行代码的初始版本开始看到它如何经过讨论、返工、补充测试最终变成可合并的形态。对审查者来说了解这些过程比只看最终diff更有价值对后来者来说翻旧PR的时间线往往能发现当初决定某个设计时的真实考量这比很多文档都详细。评论区本身也支持Markdown和提及。回复某条评论时GitHub会把上下文缩进展示方便跟踪对话脉络。我习惯在PR描述里用任务列表- [ ]列待办事项修改一个勾一个让所有人一眼就知道还差哪些工作这个技巧对长期PR特别有效。3.2 Commits这个PR包含哪些提交第二个标签是Commits它列出这个PR涉及的所有提交。每一行能看到commit的短哈希、提交信息、作者、时间以及这个commit修改了多少个文件。点击单个commit可以查看它单独引入的diff方便理解改动是如何一步步积累起来的。这里有一个常见的认知误区很多人以为PR里的commit列表就是合并进主分支后的最终记录。实际上并非如此如果采用Squash and mergeGitHub会把几十个零散commit压成一条如果采用Rebase and mergecommit会被重新排列并应用。因此看PR里的commit更重要的目的是理解作者的开发思路他是先写测试再写实现还是先改逻辑后补文档这些提交顺序往往比最终差异更能反映真实想法。3.3 Checks自动化检查第三个标签是Checks这里是自动化检查的汇总区域。在规范的仓库里PR一旦有新提交就会自动触发CI检查最常见的当然是GitHub Actions。检查内容通常包括单元测试、代码风格lint、编译构建、覆盖率扫描、部署预览等。检查状态大致分为三种绿色对钩表示通过黄色圆点表示还在运行红色叉叉表示失败。点Details可以进入具体日志页定位是哪一步失败、报了什么错。根据我的经验CI失败九成都是两类问题一是代码风格检查不过二是测试断言失败看日志最后几十行通常就能找到原因。如果你维护的是开源项目强烈建议配置分支保护规则让CI失败时PR无法被合并这能挡住大部分低级问题。3.4 Files changed一行一行地看变更第四个标签是Files changed这里是审查者和作者交互最深的区域。它以diff的形式展示文件变化左边是原文件内容右边是改动后的内容绿色表示新增行红色表示删除行。页面顶部会汇总本次PR共修改了多少个文件、增加了多少行、删除了多少行。在这个页面里你可以点击某一行行号旁边的号添加行内评论。这个能力是把代码审查从泛泛而谈变成精准指认的关键。比如看到某处逻辑处理可能漏掉了空值判断直接在那一行留下疑问作者一眼就能定位问题。如果审查完所有文件点击右上角的Review changes按钮可以填写整体评论并选择三种审查结果Comment表示普通评论Approve表示批准合并Request changes表示要求修改后重新审查。我强烈建议第一次参与开源项目的人认真走完一次发起PR - 被审查 - 根据行内评论修改的完整流程这种体验比看任何教程都更能理解PR作为协作工具的价值。3.5 合并按钮和状态提示PR页面右侧靠下的位置是合并区域。如果你有合并权限会看到合并按钮如果没有权限点击后会被提示无法操作这种情况只能等待维护者处理。合并按钮上方通常有几行状态提示读懂它们非常关键This branch has no conflicts with the base branch没有冲突可以合并This branch has conflicts that must be resolved存在冲突需要先解决This branch is out-of-date with the base branch分支落后于目标分支可能需要先更新点开合并按钮旁的倒三角可以选择合并策略合并方式说明适用场景Create a merge commit保留所有commit额外生成一个merge commit历史完整适合团队习惯保留详细过程Squash and merge把PR所有commit压成一条适合把一堆fix类型的零碎提交整理干净Rebase and merge把PR commit重新应用到目标分支不生成merge commit追求线性历史的项目这里有一个坑Rebase或Squash合并都会改变commit的真实哈希。所以如果你本地还在继续基于PR分支做开发合并前最好先切到别的分支避免之后出现大量不必要的分叉。4. 不同场景下如何高效查看PR4.1 审查别人提交的PR审查PR是团队协作中经常要做的事我的标准流程是这样第一步先看Conversation里的描述和相关讨论搞清楚这个PR要解决什么问题第二步看Commits判断改动思路是否清晰有没有夹带和主题无关的修改第三步切到Files changed按文件顺序逐行审阅遇到有疑问的地方直接在对应行添加评论第四步全部文件看完后点Review changes在总结框里写出整体结论再选择Approve或Request changes。审查过程中有一个礼貌问题尽量不要在别人的PR里直接改代码。GitHub确实允许这么做但在大多数团队里这会让人感觉不被尊重除非是极小的文档修复合集。正确方式是把自己的建议和疑问留给作者让作者决定怎么改这也是团队协作的信任基础。另外要控制审查颗粒度。我见过不少新人审查者给每一行代码都提意见结果作者疲于应付真正的大问题反而被忽略了。优先关注功能是否实现、边界情况是否处理、有没有安全隐患、测试是否覆盖关键路径。代码风格类问题可以汇总一句话带过不必每条重复。4.2 查看自己发起的PR是否通过检查作为PR作者你需要定期关注的三件事第一Checks是否全绿如果有失败进入日志定位问题修复后重新推送第二Reviewers有没有给意见如果有Request changes需要逐条回复并修改如果有Approve就可以准备合并了第三目标分支有没有更新如果团队要求rebase你需要先在本地把主分支最新改动合并进来再推上去更新PR。我养成的习惯是每次推送新commit到已有PR后都在评论区留下一句简洁说明比如已根据反馈补充了错误处理逻辑请再次审查。GitHub虽然会在推送时自动生成提醒但一句可读性强的说明能让Reviewer更快定位到你的修改范围。至于查看自己跨仓库的所有PR依然是打开github.com/pulls最方便。4.3 快速扫描组织里积压的一批PR维护大型仓库时常会出现几十个PR同时堆积的情况一个个点开看完全不可行。GitHub的PR列表支持输入筛选语法来缩小范围下面这些组合是我常用的is:pr is:openis:pr label:bugis:pr author:meis:pr assignee:meis:pr review-requested:meis:pr reviewed-by:someoneis:pr no:assignee配合sort排序参数比如sort:updated-desc按更新时间倒序sort:created-asc按创建时间正序可以快速回答哪些PR已经超过一周没动静了、哪些PR等着我处理这类问题。PR数量特别大的团队我还会借助gh CLI输出JSON数据写脚本汇总成表格比手动刷网页高效得多。总之一点学会用筛选语法PR列表的威力才能真正发挥出来。5. 查看PR时的常见问题与排查5.1 找不到Pull requests入口如果你打开仓库页面后找不到Pull requests标签先检查是不是跳到了个人信息主页或文件详情页。排除这个之后常见的原因还有仓库是私有仓库当前账号没有被邀请访问仓库已经被归档虽然PR仍然可以查看但整个仓库处于只读状态。最直接的验证方式是在地址栏手动输入 https://github.com/{owner}/{repo}/pulls强制进入PR列表。如果显示出Page not found或没有内容那就说明当前账号没有这个仓库PR的访问权限。5.2 分支被删除PR还能看到吗很多人的直觉是分支都没了PR应该也没了实际上完全不是这样。PR在创建时就会保存一份完整的仓库状态快照后续分支的删除不影响PR页面里的diff、commits和讨论记录。哪怕源分支和目标分支后来都被删了PR链接依然可以访问。但有一个例外情况如果目标分支后来有了大量新增提交GitHub会重新计算diff这时可能会出现类似not mergeable的提示表示基于最新目标分支的改动已经无法自动融合。要解决的话需要用基于最新分支的改动重新推送或者把本地分支和主分支合并后再次更新PR。5.3 如何确认编号对应的到底是PR还是Issue前面提过GitHub的Issue和PR在同一个仓库里共用编号序列。所以在Issue讨论里看到#456点进去可能是一个PR也可能是一个Issue。区分方法很简单看URL/pull/456是PR/issues/456是Issue或者看编号前的图标PR编号旁边通常有一个合并标记Issue则是圆形感叹号。这个小细节在快速跳转时特别容易踩坑确认一下就能避免打开一个不相关页面。5.4 为什么别人能看到的PR我这里看不到这种情况大概率是权限问题。公开仓库里的PR任何人都可以查看但私有仓库只有被邀请的协作者才能看到。另外如果PR是从fork出来的个人仓库发起的那么在目标仓库的PR列表里你能看到它但在fork出来的那个个人仓库页面上PR标签往往是空的。组织仓库有时会把某些PR标记为internal可见范围比完全私有稍微宽松一些但也需要组织成员身份才能访问。5.5 查看PR时页面样式或功能异常GitHub偶尔会因为浏览器缓存、插件干扰等原因出现页面渲染异常或按钮失灵。通用的排查思路是先强制刷新页面Cmd/Ctrl Shift R再检查浏览器是否安装了会对网页结构产生影响的扩展插件最后换一个浏览器或隐身模式试试。绝大多数这类现象都来自本地环境因素而不是GitHub本身服务有问题。5.6 访问GitHub不稳定时先检查什么如果PR页面长时间转圈加载不出来先别急着做任何非常规操作。第一步检查本地网络连接是否正常换个网络环境试试第二步可以清除本机的DNS缓存这是通用的网络排查手段不涉及任何特殊工具第三步看看是不是GitHub某个时段的数据中心问题通常这类问题在社区里很快就会有人同步信息。多数转圈场景都是网络波动的临时现象稍等片刻再刷新往往就恢复了。稳定访问这件事做好基本的本地网络排查就够了其他方向不做深入讨论。6. 一些建议与实操心得6.1 网页端、命令行和本地仓库怎么配合我见过不少人只依赖网页端看PR也见过一些人只爱用命令行其实两者结合起来才是最优解。网页端适合看讨论、看diff、看审查意见本地仓库适合真正验证代码比如跑测试、启动服务、复现问题。我在进行复杂PR审查时一定会先把PR分支拉到本地实际运行一遍再下结论。GitHub CLI可以很轻松地完成这一步gh pr checkout 18 --repo owner/repo执行之后本地自动切换到PR对应的分支修改完能再用gh pr status查看当前状态。网页、命令行、本地仓库三者的分工非常明确结合起来用才能真正提高效率。6.2 写PR时少给看的人添负担作为PR作者要明白Reviewer的时间也是时间。一个描述清晰的PR能省掉大量沟通成本我一般会在描述里写清楚三件事这个PR要解决什么问题改动思路大致是什么哪些地方我已经测试过、哪些地方需要重点审查。只要这三样写清楚Reviewer基本不会来来回回问基础问题。另外大PR一定要拆。一次提交5000行代码的PR谁看了都头大拆成几个几百行的小PR每个都清晰好审。这就像让你一口气吃五个包子和分五次慢慢吃完的区别后者的体验明显更舒服也更不容易被反复要求返工。6.3 团队里值得推广的PR协作习惯我从团队协作的实际效果出发推荐一套比较稳健的PR习惯第一主分支设置保护规则不允许直接推送所有改动必须走PR第二每个PR最好关联一个Issue或者在描述里明确说明要解决的问题第三CI全部通过且至少一位审查者Approve之后才允许合并第四合并方式在团队内统一要么全部Squash要么全部Rebase避免常规Merge把分支图搞乱。这些习惯一旦落地仓库历史会非常清晰之后查任何一段代码变更三步之内就能找到对应的PR和当时的讨论依据。这也是查看PR这件事最终的价值所在——它不只是一种操作更是一整套协作过程的记录。我个人实际操作中感受最深的一点是查看PR这件事越早养成主动看的习惯越不容易在团队里掉队。哪怕你暂时不负责审查每周花几分钟扫一遍团队PR列表也能清楚大家最近在做什么、有没有踩到什么坑。PR页面就是项目的现场很多信息散落在Issues和commit里时是零碎的只有在PR里才会被完整串起来。把看PR变成日常习惯几个月后你会明显感觉到自己对项目的理解会上一个台阶。
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。