目录

07 · Pull Requests 标签栏详解

07 · Pull Requests 标签栏详解

这篇的目标:理解 Pull Request 的完整工作流——创建 PR、审查代码、合并分支、处理冲突。


1. Pull Request 是什么

Pull Request(简称 PR)是 GitHub 协作的核心机制。当你修改了仓库的某个分支后,通过 PR 请求仓库维护者把你的修改合入主分支。

一句话:PR 是"我想把这段代码加进去,请审核"的请求


2. PR 列表页布局

进入仓库后点击 Pull requests 标签,页面结构和 Issues 类似:

区域说明
搜索栏搜索 PR,is:pr is:open
Filters快速过滤
Labels / Milestones标签和里程碑
New新建 PR 按钮
Open / Closed切换查看开放/已关闭的 PR

每条 PR 条目展示:

  • 状态图标:🟢 Open(开放)/ 🟣 Merged(已合并)/ ⬜ Closed(未合并关闭)
  • 标题和**#编号**
  • Checks 状态:✅ 检查通过 / ❌ 失败 / 🟡 待检查
  • 标签(如 CLA Signed)
  • 作者创建时间
  • 审查请求(Reviewers)
  • 评论数
  • Draft 标记:草稿 PR 表示还未准备好

3. 创建 Pull Request

前提条件

你需要在某个分支上做了修改,并且已经 push 到远程仓库。

步骤

① 点击 New pull request

② 选择分支

字段说明
base目标分支(通常是 main)
compare你的修改所在的分支

选择后可以看到两个分支的代码差异对比

③ 填写 PR 信息

字段说明
Title简明描述这次修改
Description详细说明(支持 Markdown)
Reviewers请求特定的审查者
Assignees指派给谁
Labels打标签
Projects关联项目看板
Development关联 Issue(如 Closes #123)

④ 点击 Create pull request

草稿 PR

点击 Create draft pull request 下拉箭头可以选择创建草稿 PR。草稿 PR 不会被合并,适合还没做完但想先给队友看看的情况。准备好后点击 Ready for review


4. PR 详情页

创建后进入 PR 详情页,顶部导航包含:

标签说明
Conversation讨论区,所有评论和操作记录
Commits这个 PR 包含的所有 commit 列表
ChecksCI/CD 检查状态
Files changed改了什么文件,逐行对比

Conversation 区域

  • PR 描述
  • 所有评论和讨论
  • 操作按钮(Merge / Close)

Files changed 区域

  • 绿色:新增的代码行
  • 红色:删除的代码行
  • 每一行可以点击 ➕ 发表审查意见
  • Review changes 按钮:提交审查结论

5. 代码审查

提交审查

点击 Review changes,有三个选项:

选项说明
Comment一般评论,不阻止合并
Request changes要求修改,阻止合并直到解决
Approve批准通过,可以合并

每次审查提交时还可以写总结性评论。

审查建议

  • 逐行检查代码逻辑
  • 提建设性意见(不要说"这不对",要说"建议改成 XXX")
  • 使用 Suggest changes 功能可以直接在评论中写建议代码

6. 合并与冲突处理

当审查通过后,有权限的维护者可以点击 Merge pull request 合并 PR。合并后可以删除原始分支。

如果代码有冲突,GitHub 会提示 This branch has conflicts that must be resolved。可点击 Resolve conflicts 在线解决,或在本地用 git merge 解决后重新推送。

合并方式(Merge commit / Squash and merge / Rebase and merge)和冲突处理的详细操作,将在进阶篇的分支详解中深入讲解。


小结

  • 理解 PR 的概念和工作流
  • 会创建 PR(包括草稿 PR)
  • 会审查代码和提交审查意见
  • 知道三种合并方式的区别
  • 了解如何解决冲突

下一篇:学习 Actions 标签栏——自动化你的工作流(CI/CD)。


快速自查清单

  • 我创建过 Pull Request
  • 我审查过其他人的 PR
  • 我合并过 PR
  • 我知道三种合并方式的区别
  • 我了解如何解决冲突