同一状态的多个副本必然漂移

同一状态的多个副本必然漂移

# 同一状态的多个副本必然漂移

结论

同一份状态存在多处副本时(本地 / 远端、工作区 / HEAD、worker / 主仓、两个数据源), 漂移是默认状态,不是异常。 任何一处的绿灯只对那一份成立。 判据一句话:先把副本对齐到同一条标识(commit / 版本 / 游标 / id),再谈「行不行」。

四处证据:每一处都是「绿灯对的是另一份」

出处绿灯 / 状态它实际对应的副本症状
合并绿灯要对应当前HEADPR 上 CI 全绿、显示「可合并」旧提交(本地又提交了但未 push)合进去的不是刚改好的版本
开PR前先确认基线的远端状态本地分支看起来只领先几个提交远端主线落后很多PR 带进一长串无关历史
交付前先同步主干本地验证通过已漂移的主干交付后冲突 / 回归
多源更新按维度取真源「取更新的那个源」两个源各自在部分维度更新拿到的是一份混合、互不同步的产物

旁证:远端主线可能与本地主线无共同祖先 —— 副本之间的差异可以大到连共同祖先都没有, 此时「对比一下」这个动作本身就不成立。

综合判断

  1. 副本漂移不需要任何错误操作就会发生。 只要有两处可以独立写入,它们就会分叉; 所以「我本地是好的」在结构上就不能推出「交付出去是好的」。

  2. 对齐的载体必须是「同一条标识」:commit SHA、版本号、游标、记录 id —— 而不是「看起来一样」「刚才跑过」「名字相同」。这也是 对照两端要用同一条标识 的同一形状。

  3. 可迁移的动作:看到任何绿灯 / 状态页 / 「已验证」时,先问三句 —— 「它对应的是哪一条标识?」「我手上这份是同一条吗?」「这中间有没有人又写过?」 三句都对齐,绿灯才有意义。

  4. 顺带推论:把副本数量压到最少,比把校验做得更勤更划算。 能收敛到单一真源的, 就不要维护两份再同步。

与既有 synthesis 的关系

为什么这是 synthesis

单看每一页,都是某次 git / 数据源的具体事故。 并排之后才看得出它们共享同一个结构:状态被复制,而权威性没有被复制。

相关