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

如何使用Git撤销历史提交并保留后续所有更改?

解决Git历史提交调整问题

一、撤销两次历史提交并保留后续更改

操作前务必先创建分支备份,防止误操作:

git checkout master
git checkout -b master_backup
  1. 执行交互式变基,先通过git log --oneline查看提交历史,找到要撤销的两次提交的前一个提交的哈希值(比如要撤销的两次提交是abc123和def456,它们的前置提交是ghi789):
git rebase -i ghi789
  1. 在弹出的编辑器里,找到那两次提交的行,把行首的pick改成drop(或直接删除这两行),保存并退出编辑器。
  2. Git会自动将后续所有提交重新应用到移除目标提交后的分支上,若出现冲突,手动解决冲突后执行:
git add .
git rebase --continue
  1. 由于修改了远程分支的历史,需要强制推送到Azure DevOps:
git push -f origin master

注意:强制推送后,团队其他成员需要重新拉取分支,避免本地历史与远程冲突。

二、移除移动项目文件夹的那次提交并保留后续更改

同样先创建备份分支,再按以下步骤操作:

  1. 用git log --oneline找到移动文件夹提交的前一个提交的哈希值,执行交互式变基:
git rebase -i <前一个提交哈希>
  1. 在编辑器中找到移动文件夹的提交行,把pick改成drop,保存退出。
  2. 此时大概率会出现冲突(后续提交可能基于移动后的文件路径修改),解决冲突时:
    • 打开冲突文件,将后续提交的修改内容对应到原路径的文件中
    • 删除移动文件夹相关的变更内容
    • 解决完所有冲突后,执行:
      git add .
      git rebase --continue
      
  3. 完成变基后,强制推送到远程:
git push -f origin master

注意:如果团队成员已拉取过包含移动提交的分支,需要让他们执行git pull --rebase同步远程新历史。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 10:23:17