You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Git回滚main分支已推送合并提交至指定版本并保留历史

回滚已合并入远程main分支提交的操作指南

针对你无main分支直接推送权限、需通过特性分支提PR合入的约束,全程使用git revert生成反向提交实现回滚,不会改写公共分支历史,最终代码状态会和目标提交4c93166完全一致,操作步骤如下:

1. 同步本地仓库状态

先把本地main分支更新到和远程main完全一致:

git checkout main
git pull origin main

2. 创建回滚专用特性分支

基于最新的main分支创建用于提PR的特性分支,如果你本地已经有revert-databricks-install分支可以直接切换使用:

git checkout -b revert-databricks-install

3. 按从新到旧的顺序回滚两个合并提交

合并提交的回滚必须加-m 1参数,指定保留main主线的提交历史、撤销合入PR带来的变更,必须先回滚更新的提交,再回滚更早的提交,顺序颠倒会产生大量冗余冲突:

  • 先回滚最新的合并提交c4f28ad(PR3973的合并提交):
    git revert -m 1 c4f28ad
    
    如果执行过程中提示冲突,手动解决冲突文件后,执行git add <冲突文件路径>,再运行git revert --continue完成本次回滚。
  • 再回滚更早的合并提交aa68a82(databricks驱动安装PR的合并提交):
    git revert -m 1 aa68a82
    
    同样按提示处理可能出现的冲突,完成回滚流程。

4. 验证回滚结果

执行以下命令对比当前分支和目标提交4c93166的文件差异:

git diff 4c93166

如果命令没有任何输出,说明当前分支的代码状态已经和4c93166完全一致,回滚符合预期。

5. 推送分支提交PR

将本地完成回滚的特性分支推送到远程仓库:

git push origin revert-databricks-install

之后在仓库的代码托管页面正常创建PR,目标分支选择main,在PR描述中说明本次变更为回滚c4f28ad、aa68a82两个合并提交,将代码恢复到4c93166对应的状态,走正常代码评审流程合入即可。

避坑说明

  • 禁止使用git reset --hard加强制推送的方式修改main分支,该操作会改写公共提交历史,影响所有协作者的本地仓库,且保护分支通常会直接禁止强制推送,操作无法生效。
  • 回滚合并提交时必须携带-m 1参数,否则Git会抛出错误,无法识别需要保留哪条分支线的历史。
  • 回滚顺序不可颠倒,必须从最新的提交往旧提交依次回滚,否则会出现大量不必要的冲突处理工作。

内容的提问来源于stack exchange,提问作者Buggy B

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 20:15:52