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

如何通过Git依次回退多个合并与提交至Commit H状态?

Git 回退到指定提交并推送远程的操作方法

场景说明

你的Git提交历史(从新到旧排序)如下:

Merge A(当前最新状态)
Commit B
Merge C
Commit D
Commit E
Merge F
Commit G
Commit H <-- 目标状态

需要撤销上述所有在H之后的提交(3个合并提交+4个普通提交),将代码恢复到Commit H的状态并推送到远程仓库。

方法一:重置到目标提交(适合私有分支/团队允许改写历史)

这种方式会直接改写本地和远程的提交历史,操作更直接,但如果是多人协作的公共分支,可能会影响其他开发者。

  1. 找到Commit H的哈希值
    执行git log查看提交历史,复制Commit H的完整或短哈希值(比如h123abc)。

  2. 本地强制重置到Commit H

git reset --hard h123abc

注意:--hard参数会清空工作区和暂存区的未提交修改,执行前务必确认本地没有需要保留的更改。

  1. 强制推送到远程仓库
    为了避免意外覆盖他人提交,优先使用--force-with-lease:
git push origin <你的分支名> --force-with-lease

如果确认远程没有其他人的新提交,也可以用--force:

git push origin <你的分支名> --force

方法二:反向提交撤销(适合公共分支/不想改写历史)

这种方式会为每个需要撤销的提交生成一个反向提交,保留原有历史记录,最终代码状态与Commit H一致,更安全。

需要从最新的提交开始依次反向撤销,合并提交需要用-m 1指定父分支(通常选1,代表合并前的主分支):

  1. 撤销Merge A:
git revert -m 1 <Merge A的哈希值>
  1. 撤销Commit B:
git revert <Commit B的哈希值>
  1. 撤销Merge C:
git revert -m 1 <Merge C的哈希值>
  1. 撤销Commit D:
git revert <Commit D的哈希值>
  1. 撤销Commit E:
git revert <Commit E的哈希值>
  1. 撤销Merge F:
git revert -m 1 <Merge F的哈希值>
  1. 撤销Commit G:
git revert <Commit G的哈希值>

完成所有反向提交后,推送到远程:

git push origin <你的分支名>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 15:27:03