(十五)用 Pull Request 交流与合入修改
1. 从功能分支提出可查看的变化
本地从最新 main 开始新分支,完成一项实现与测试,然后推送:
# 先更新本地主线,再从它开始一项修正。
git switch main
git pull --ff-only
git switch -c docs/reading-example
# 在编辑器补充 README 的运行示例后,检查结果并提交这次说明。
python check_reading.py
git add -- README.md
git diff --cached
git commit -m "补充恰好目标时的运行示例"
git push -u origin docs/reading-example
这次在 README 中补充 20、35、45 分钟的手算:目标为 35,达标两次,总时长 100 分钟。代码仍用已有检查核对,文档把“恰好目标也达标”写得更明确。
在 GitHub 选择 Compare & pull request。base 是准备接收修改的目标分支 main,compare/head 是带来修改的功能分支 docs/reading-example。先看 Files changed,确认差异只有这次说明,再填写标题、变化和验证结果。
标题:补充恰好目标时的运行示例
README 增加20、35、45分钟的手算,说明目标35分钟时达标两次、总计100分钟。
同时点明35分钟这一项会被计入,便于对照“不少于”的判断。
验证:python check_reading.py 通过。
提交说明与 PR 描述给审查者解释行为,测试结果提供核对依据。与某个 Issue 有关时,在 PR 中关联对应的讨论,读者就可以从问题追到这次改动。创建 PR
实际 PR 中,顶部显示功能分支准备合入 main,下方显示检查结果。截图中的分支给 README 补充了运行检查的入口;绿色检查说明这次提交已重新执行检查。
进入 Files changed(更改的文件),按文件查看新增与删除。这里 README 新增四行,正文交代了应运行的命令;审查时把它与 PR 描述逐项对应。
2. 回应审查与选择合并方式
审查者可以在差异行留言,提出需要修正的输入。把修正提交到同一个功能分支,再 push,原 PR 会更新;不需要为每次回应另建一个 PR。尚在继续整理的工作可以标成 Draft,准备好后再请求审查。
| 合并方式 | 主线得到的历史 |
|---|---|
| Merge commit | 保留功能提交,并用合并提交连接两条历史 |
| Squash and merge | 把 PR 的整体变化压成主线中的一个新提交 |
| Rebase and merge | 把各次修改重放到主线,提交标识可能改变 |
合并后更新本地 main。普通 merge 之后,已合入的本地功能分支可以用 branch -d 删除;squash 后,Git 未必把原分支判断为已合并,因为主线中是另一份新提交。先比较 PR 的最终内容、确认没有仍要保留的工作,再安排本地分支清理,不把删除分支当作合并步骤本身。