一次多人协作冲突后,我终于理解了 Git 分支和 PR 的真正作用

背景:一次“今天刚发生”的协作问题

这是我今天在实际项目协作中遇到并解决的问题。

当多人同时参与同一代码库开发时,冲突并不是偶发事件,而是必然事件
真正的问题不在于“谁写得好不好”,而在于:系统是否具备处理冲突的能力


1. 我们到底在解决什么问题?

在这次协作中,我意识到我们面对的并不是单一问题,而是三类冲突同时存在。

1.1 时间冲突(先后问题)

  • 同一份代码
  • 在不同时间
  • 被不同人修改

冲突的根源并不是能力问题,而是时间错位


1.2 认知冲突(谁对谁错)

  • 你觉得这样对
  • 别人觉得那样对

在当下阶段,很难立刻分出“绝对正确”。


1.3 稳定性冲突(现在能不能用)

  • 新功能 ≠ 稳定
  • 稳定 ≠ 最新

系统不可能同时满足所有目标,必须做出取舍。


2. 分支的本质:不是管理代码,而是管理风险

分支存在的意义,并不是为了“流程更复杂”,
而是为了在协作中隔离风险

不同分支,本质上代表了不同的风险承受等级


3. 三种分支 = 三种风险区

main:零容忍风险区

任何时候都必须:

  • 能跑
  • 能交付
  • 不解释

这是成品区


develop:可控风险区

允许:

  • 新功能
  • 小 Bug

但必须:

  • 不影响整体运行

这是半成品装配线


feature:高风险实验区

允许:

  • 报错
  • 推翻重写
  • 临时 hack

这是个人试验台


4. PR(Pull Request)的底层逻辑

把「我觉得可以」变成「我们都看过了」。

PR 的作用不是评判“谁写得好”,
而是完成一次关键转变:

把个人判断,升级为团队共识。

在 PR 之前,风险只由个人承担;
在 PR 之后,风险进入团队可控范围。


5. 总结:工程机制是在对抗协作中的不确定性

这次经历让我真正意识到:

  • 分支不是形式
  • PR 不是走流程
  • 它们的存在,是为了让协作可持续发生

当系统规模变大时,你不可能依赖“大家都谨慎一点”来维持稳定。
工程机制的意义,在于把不确定性限制在可接受范围内。