Vibe Tutorial
Git 版本控制与跨平台协作

10.9 Pull Request工作流

Tip

没经过 Code Review 的代码,就像没经过安检的行李,谁知道里面藏着炸弹还是糖果?


1. 为什么要学这个?

在正规团队,你永远没有权限直推 main 分支。 你试图 git push origin main,终端会冷冷地甩给你一行红字: remote: error: GH006: Protected branch update failed.

这就像你想进金库,但保安把你拦住了。 你需要填写申请表,说明你带了什么,经过审批后,由专门的人帮你放进去。 这张申请表,在 GitHub 叫 Pull Request (PR),在 GitLab 叫 Merge Request (MR)


2. 核心概念:Code Review (代码审查)

PR 真的只是为了合并吗?

不。PR 是程序员最好的学校。 当你发起 PR 后,资深工程师会逐行阅读你的代码,并在旁边评论:

  • "这里会内存泄漏。"
  • "这个变量名起得像天书。"
  • "能不能抽出一个组件?"

这是免费的一对一私教课。


3. 解决方案 (HOW)

标准 PR 流程

  1. 开发:在 feature/login 分支写好代码并 push。
  2. 发起:在 GitHub 页面上,点击醒目的绿色按钮 Compare & pull request
  3. 描述:(关键) 写清楚你改了什么,最好贴上截图录屏
  4. Review:邀请队友 Review。队友可能会:
    • Comment: 提出疑问。
    • Request changes: 打回重做。
    • Approve: 通过。
  5. 修改:你在本地修改代码,再次 git push(PR 页面会自动更新,不用重新发)。
  6. 合并:所有灯变绿后,点击 Squash and merge

协作泳道图

graph TD
    Dev["开发者"] -->|"1. Push branch"| GitHub["GitHub"]
    GitHub -->|"2. Create PR"| Reviewer["Reviewer (审查者)"]
    
    Reviewer -->|"3. 发现 Bug (Request Changes)"| GitHub
    GitHub -.->|"通知"| Dev
    
    Dev -->|"4. Fix & Push"| GitHub
    GitHub -->|"5. 自动更新 diff"| Reviewer
    
    Reviewer -->|"6. Approve"| GitHub
    GitHub -->|"7. Merge to Main"| Main["Main 分支 (生产环境)"]
    
    style GitHub fill:#e3f2fd,stroke:#1565c0
    style Main fill:#c8e6c9,stroke:#2e7d32

4. 真实案例

Story

价值一千万的 WHERE 子句

某金融公司的后端工程师写了一个清理过期日志的脚本。 逻辑是:DELETE FROM logs WHERE created_at < '2023-01-01'。 但他在写 SQL 时,手抖漏掉了 WHERE,变成了 DELETE FROM logs。 这个脚本如果运行,全公司的日志表会被清空。 甚至 DELETE 操作太慢,还会锁死数据库,导致服务不可用。

谁救了公司? 是 Code Review。 他的同事在 Review 代码时,一眼看到了这行没有 WHERE 的 SQL。 一个简单的评论:"Bro, you trying to kill us?" 这一刻,PR 机制挽救了一场史诗级的灾难。

Vibe 心法: 不要把 "Request changes" 当作批评。 每一次被打回,都是队友在帮你排雷。 感谢那个在 PR 里对你挑三拣四的人,他在教你如何不把公司搞垮。


5. 本章小结

  1. 安检机制:PR 是保护主分支的最后一道防线。
  2. 写好描述:PR 的描述越清晰,Review 越快(贴图是美德)。
  3. 拥抱反馈:Review 意见不是针对你个人,是针对代码。