首页/开发/Git 与协作速查/用 fetch 拉取 PR 的引用
协作与代码评审75 条

用 fetch 拉取 PR 的引用

不依赖 CLI 也能取到 PR 代码:GitHub 把 PR 头部暴露为 refs/pull/<编号>/head,按引用拉取即可用于对比或本地复现。

Git 与协作速查开发更新于 2026-10-13

评审请求也能按引用抓取

评审请求的代码不一定要靠命令行工具获取:平台会把请求的头部暴露成一个引用(GitHub 上是 refs/pull/<编号>/head),直接按引用抓取就能拿到同一份内容。这样在没有装命令行工具、或需要脚本化处理时也能用,适合本地复现、差异对比与排查。

基本信息

头部引用refs/pull/<编号>/head
合并态引用refs/pull/<编号>/merge,平台的试合并结果
抓取写法git fetch origin pull/<编号>/head:<本地分支>
平台差异其他平台的引用命名不同,按对应平台文档确认
适用场景不依赖命令行工具的本地复现

典型使用场景

  • 在本地复现评审请求中报告的问题
  • 在没有命令行工具的环境里检查某个请求的代码
  • 脚本批量拉取若干请求做静态检查
  • 核对作者这一轮究竟推了哪些内容
  • 不改动自己分支的前提下临时查看请求内容

常用示例

常用示例
git fetch origin pull/128/head:pr-128        # 抓取请求头部到本地分支
git switch pr-128                            # 切过去查看内容
git log --oneline -3                          # 查看该请求的提交清单
git fetch origin pull/128/merge:pr-128-merge  # 抓取平台的试合并结果
git diff origin/main...pr-128 --stat          # 三点对比更贴近平台视图

引用读法

引用含义用途
pull/<编号>/head请求的头部提交本地复现与差异对比
pull/<编号>/merge平台的试合并结果判断合并后能否通过检查
流水线服务常直接消费这些引用;本地做对比时用三点写法(目标分支与请求分支之间)更贴近平台展示的差异范围。
请求分支被强推之后,本地已经抓取的引用就过期了,重新抓取覆盖即可,不会影响本地其他分支。
已经装了命令行工具时,也可以直接用它的检出命令,效果相同。按引用抓取的优势在于不依赖工具链,脚本与流水线里更容易复用同一套写法。

本地核对步骤

  • 抓取到一个独立分支,避免直接改动自己正在开发的分支
  • 用相对目标分支的三点对比确认改动范围
  • 跑一遍本地测试或复现步骤,验证问题是否仍然存在
  • 核对完成之后删除这个临时分支,保持分支列表干净

易错点

  • 请求分支被强推后本地引用会过期,需要重新抓取覆盖
  • 合并态引用是平台临时试合并的结果,不等于最终合并后的内容
  • 抓取时忘记指定本地目标名,引用只落在一个临时名字里,后面很难找回来
  • 不同平台的引用命名规则不同,照搬其他平台的路径会抓取失败

数据来源与参考

  • GitHub Docs:Checking out pull requests locally(refs/pull)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌