Appearance
Pull Request
概述
Pull Request(PR)是现代 Git 协作的核心机制,它允许开发者提议将代码变更合并到主分支。通过 PR,团队可以进行代码审查、讨论和自动化测试,确保代码质量。
什么是 PR
PR 的定义
Pull Request 是一种请求,请求将一个分支的变更合并到另一个分支。它包含:
- 代码变更:具体的文件修改
- 讨论:团队成员的评论和反馈
- 状态:审核状态、CI 状态
- 元数据:标签、里程碑、指派人员
PR 与 Merge Request
- Pull Request:GitHub、Bitbucket 使用
- Merge Request:GitLab 使用
两者功能相似,只是名称不同。
PR 的作用
- 代码审查:团队成员审核代码质量
- 知识共享:传播代码变更信息
- 质量保证:结合 CI/CD 进行自动化测试
- 历史记录:记录决策过程和讨论
创建 PR
准备工作
1. 创建功能分支
bash
git checkout main
git pull origin main
git checkout -b feature/user-auth2. 开发并提交
bash
git add .
git commit -m "feat: implement user authentication"3. 推送分支
bash
git push origin feature/user-auth在 GitHub 创建 PR
方法一:通过网页界面
- 访问仓库页面
- 点击 "Compare & pull request" 按钮
- 选择源分支和目标分支
- 填写 PR 标题和描述
- 点击 "Create pull request"
方法二:使用 GitHub CLI
bash
gh pr create --title "Add user authentication" --body "Implement user authentication feature"PR 标题和描述
标题规范:
feat: add user authentication
fix: resolve login timeout issue
refactor: restructure auth module描述模板:
markdown
## 变更描述
实现用户认证功能,包括登录、注册和密码重置。
## 变更类型
- [x] 新功能
- [ ] Bug 修复
- [ ] 重构
- [ ] 文档更新
## 测试
- [x] 已添加单元测试
- [x] 已进行手动测试
## 截图

## 相关 Issue
Closes #123从 Fork 创建 PR
bash
git remote add upstream git@github.com:original/repo.git
git fetch upstream
git checkout -b feature/new-feature
git push origin feature/new-feature在 GitHub 上创建从 your-username:feature/new-feature 到 original:main 的 PR。
PR 审核流程
审核角色
- 作者:创建 PR 的开发者
- 审核者:审查代码的团队成员
- 维护者:有权合并 PR 的人员
审核状态
| 状态 | 说明 |
|---|---|
| Review required | 等待审核 |
| Changes requested | 需要修改 |
| Approved | 审核通过 |
| Merged | 已合并 |
| Closed | 已关闭 |
代码审核
审核者操作:
- 打开 PR 页面
- 点击 "Files changed"
- 查看代码变更
- 添加行内评论
- 提交审核意见
审核选项:
- Comment:仅评论,不改变状态
- Approve:批准合并
- Request changes:要求修改
添加评论
行内评论:
在代码行上添加评论:
markdown
建议使用常量替代魔法数字整体评论:
在 Conversation 标签页添加总体评论。
响应审核反馈
1. 根据反馈修改代码
bash
git add .
git commit -m "refactor: address review feedback"
git push origin feature/user-auth2. 回复评论
在评论下方回复说明修改情况。
3. 请求重新审核
修改完成后,请求审核者重新审核。
CI/CD 检查
PR 通常会触发 CI/CD 流程:
- 运行单元测试
- 代码风格检查
- 安全扫描
- 构建验证
确保所有检查通过:
bash
gh pr checks合并 PR
合并条件
- 所有审核者批准
- CI/CD 检查通过
- 没有合并冲突
- 符合分支保护规则
合并方式
1. Create a merge commit
创建一个合并提交:
bash
git merge --no-ff feature/user-auth2. Squash and merge
压缩所有提交为一个:
bash
git merge --squash feature/user-auth
git commit -m "feat: add user authentication (#123)"3. Rebase and merge
变基后快进合并:
bash
git rebase feature/user-auth
git merge feature/user-auth通过网页合并
- 点击 "Merge pull request"
- 选择合并方式
- 确认合并信息
- 点击 "Confirm merge"
通过命令行合并
bash
git checkout main
git pull origin main
git merge feature/user-auth
git push origin main通过 GitHub CLI 合并
bash
gh pr merge 123 --merge
gh pr merge 123 --squash
gh pr merge 123 --rebase合并后清理
bash
git branch -d feature/user-auth
git push origin --delete feature/user-authPR 最佳实践
小而专注的 PR
- 每个 PR 只做一件事
- 控制变更文件数量
- 便于审查和理解
清晰的描述
markdown
## 目标
实现用户登录功能
## 变更内容
- 添加登录页面
- 实现认证逻辑
- 添加单元测试
## 测试方法
1. 访问 /login
2. 输入用户名和密码
3. 点击登录按钮及时响应
- 快速回复审核评论
- 及时修改代码
- 保持 PR 活跃
保持分支更新
bash
git fetch origin
git rebase origin/main
git push origin feature/user-auth --force-with-lease使用 WIP 标记
对于未完成的 PR:
[WIP] Add user authentication或使用 GitHub 的 Draft PR 功能。
常见问题
解决合并冲突
bash
git fetch origin
git checkout main
git pull origin main
git checkout feature/user-auth
git rebase origin/main
git add .
git rebase --continue
git push origin feature/user-auth --force-with-lease关闭 PR
bash
gh pr close 123重新打开 PR
bash
gh pr reopen 123查看 PR 状态
bash
gh pr view 123
gh pr status列出所有 PR
bash
gh pr list
gh pr list --state open
gh pr list --author username总结
- PR 是代码审查和协作的核心工具
- 创建 PR 前确保代码已推送
- 编写清晰的标题和描述
- 积极参与代码审核
- 选择合适的合并方式
- 合并后及时清理分支
