PR(Pull Request)是 GitHub 上协作开发的核心功能,用于向项目贡献代码或建议修改。下面是完整的 PR 流程:
- 访问目标仓库,点击右上角的 Fork 按钮
- 将仓库复制到你的 GitHub 账户下
git clone https://github.com/你的用户名/仓库名.git
cd 仓库名git remote add upstream https://github.com/原所有者/原仓库名.gitgit checkout -b feature/你的功能名
# 或 fix/修复的问题- 在本地修改代码
- 添加并提交更改
git add .
git commit -m "清晰描述你的改动"- 推送分支到你的 GitHub 仓库
git push origin feature/你的功能名- 在 GitHub 上进入你复刻的仓库
- 会看到提示:"feature/你的功能名 had recent pushes",点击 Compare & pull request
- 如果没有提示,手动切换到该分支,点击 Contribute → Open Pull Request
- 填写 PR 信息:
- 标题:简明扼要的概括
- 描述:详细说明改动内容、原因、测试情况等
- 关联 Issue(如果有):在描述中输入
#选择关联的 Issue 编号
- 选择基础分支和目标分支:
- base repository:原仓库(目标)
- base:原仓库的目标分支(通常是 main 或 develop)
- head repository:你的仓库
- compare:你的功能分支
- 点击 Create pull request
- 项目维护者会收到通知并审查你的代码
- 可能会在 PR 评论区提出修改意见
- 在本地同一分支继续修改
- 提交并推送:
git add .
git commit -m "根据反馈修改xxx"
git push origin feature/你的功能名- 无需重新创建 PR,推送会自动更新到同一个 PR 中
- 同步上游更新:
git fetch upstream
git checkout main
git merge upstream/main
git checkout feature/你的功能名
git merge main # 或 git rebase main
# 解决冲突后
git add .
git commit -m "解决合并冲突"
git push origin feature/你的功能名当 PR 通过审核后,项目维护者会进行合并。合并方式通常有三种:
- Create a merge commit:保留所有提交历史,添加一个合并提交
- Squash and merge:将你的所有提交压缩成一个提交再合并(更整洁)
- Rebase and merge:将你的提交变基到目标分支顶部再合并(线性历史)
合并后,你的贡献就正式成为项目的一部分了!
- 删除本地分支(可选但推荐)
git checkout main
git branch -d feature/你的功能名- 删除远程分支(可选)
git push origin --delete feature/你的功能名- 同步更新的主分支
git pull upstream main
git push origin main| 要点 | 说明 |
|---|---|
| 小而精 | 一个 PR 只解决一个问题,避免超大 PR |
| 清晰描述 | 说明“为什么”而不是“做了什么” |
| 关联 Issue | 如果有对应的 Issue,记得关联 |
| 自测通过 | 提交前确保代码可以正常运行 |
| 遵循规范 | 遵守项目的代码风格、提交信息规范 |
| 及时响应 | 对审核意见及时回应和修改 |
你(复刻/分支) → 创建 Pull Request → 原仓库(目标分支)
↓
👀 维护者审核
↓
┌──────┴──────┐
↓ ↓
✅ 通过 ❌ 需要修改
↓ ↓
合并 PR 🔄 你修改代码并推送
↓ ↓
完成 🎉 ← 返回审核
必须先在 Git 中配置指向上游存储库的远程库,然后才能将分支与上游存储库同步。
-
打开Git Bash
-
将当前工作目录更改为你的本地仓库
-
从上游仓库获取分支及其各自的提交 对 BRANCH-NAME 的提交将保存在本地分支 upstream/BRANCH-NAME 中。
git fetch upstream- 签出分支的本地默认分支
git checkout main- 将上游默认分支(在本例中为 upstream/main)的更改合并到本地默认分支中 这会使复刻的默认分支与上游仓库同步,而不会丢失本地更改。
git merge upstream/main