如何撤销Salesforce组织中错误部署的代码更改?
Salesforce Sandbox 撤销错误代码部署的可行方案
Sandbox 本身没有生产环境那样的原生一键回滚按钮,以下是按操作优先级排序的可落地方案,覆盖绝大多数场景:
优先通过版本控制系统(VCS)回滚
这是风险最低、最稳妥的方案,适合所有有规范代码管理的团队:- 在Git等版本管理工具中定位到错误部署前最后一个正确的提交节点,拉取对应分支代码
- 对比本次错误提交的差异清单,仅筛选出你误部署覆盖的文件,不要全量回滚,避免冲掉你部署之后其他同事提交到Sandbox的未同步改动
- 本地校验代码完整性、和被覆盖代码的开发者确认内容无误后,重新部署到目标Sandbox即可。
通过 Salesforce CLI 直接回滚部署任务
如果你是用sfdx完成的错误部署,可以直接用官方命令快速回滚:- 本地终端执行
sf project deploy list -u <目标Sandbox别名>,列出近期所有部署记录,找到对应错误部署的Job ID - 执行回滚命令
sf project deploy rollback -i <错误部署的Job ID> -u <目标Sandbox别名>,工具会自动撤销该次部署引入的所有元数据变更
注意:该方式仅支持sfdx发起、部署成功且未超过3天的任务,执行前建议先拉取当前Sandbox全量元数据做本地备份,避免意外丢代码
- 本地终端执行
手动通过元数据版本历史恢复
如果没有版本管理记录、也没有留存sfdx部署日志,可以走平台自带的版本恢复能力:- 针对Apex类、触发器、Lightning组件、Visualforce页面/组件这类带版本记录的元数据:进入Setup的对应元数据管理页,找到被覆盖的条目,打开「版本历史」 tab,选择误操作前的最后一个历史版本直接恢复即可
- 针对无版本历史的元数据类型:查找最近一次从该Sandbox拉取的本地代码备份、或Sandbox最近一次刷新时的初始快照,提取被覆盖的代码文件重新部署。
极端场景兜底方案
如果以上方式都无法找回被覆盖的代码,可以联系Salesforce支持申请将Sandbox恢复到错误部署时间点前的快照。该操作会清除快照时间点之后Sandbox内所有的代码、配置、测试数据改动,必须提前和全团队同步确认影响范围,非必要不使用
所有回滚操作完成后,必须执行对应模块的单元测试验证功能正常,同步告知相关开发同事核对代码内容,避免回滚遗漏引发二次问题。
内容的提问来源于stack exchange,提问作者Shiv Patel
相关产品推荐
相关产品推荐

