外观
如何理解Git、Gerrit 与变更回退的技术要点?
标准回答
Git 提交是不可变快照标识,分支是可移动引用。rebase 会重写提交身份,merge 会保留并连接历史。Gerrit 的变更与 patch set 概念又是一层协作对象,应把分析报告关联到具体 patch set 和 SHA,不能只写变更标题。
对合并后行为敏感的门禁,应验证目标分支与当前变更组合后的结果,避免两条单独通过的变更合在一起失败。冲突解决本身也是新代码,需要按实际结果重新分析。
回退优先考虑可审计的反向提交、功能开关或版本回滚,并检查数据库和配置是否兼容。源代码回退不保证外部副作用自动撤销。质量门禁发布也应版本化,必要时可以撤回某条规则而不停止全部检查。
追问与回答
为什么修复冲突后旧报告不能直接沿用
最终源码和依赖关系已改变,旧报告只对旧输入成立;至少重跑受影响的必需检查。
如何区分检查失败与需要人工复核
错误类型、证据和允许的处理动作分别建模,避免通过修改退出码或永久 suppress 绕开真实问题。
易混淆点
- 把分支名当作不可变化的版本标识。
内容来源
- Android 与 AI 工程 Wiki · 原条目
q130