Git仓库alpha中如何回退提交B且保留后续提交修改?
如何在保留后续提交的前提下回退Git提交B?
方法1:正确使用git revert(推荐,适合已推送到远程的分支)
你之前觉得git revert B会丢失后续提交的更改,其实是误解了它的作用——这个命令不会直接重置文件状态,而是生成一个新提交来抵消B的所有修改。如果后续的c/d/e/f提交改动了B中碰过的文件,执行时会触发冲突,只要手动解决冲突就能保留后续更改:
- 运行命令:
git revert B - 打开冲突标记的文件,手动保留c/d/e/f的修改内容,移除B带来的改动
- 解决完所有冲突后,执行
git add . - 执行
git commit(Git会自动生成撤销B的提交信息,可按需修改) - 推送到远程仓库:
git push
方法2:交互式变基(仅适用于私有远程分支)
如果这个远程分支是你个人专用,且没有其他团队成员基于后续提交开发,可以用变基直接删除提交B:
- 运行命令:
git rebase -i a(a是B之前的那个提交ID) - 在弹出的编辑界面里,找到提交B对应的行,把开头的
pick改成drop - 保存退出后,Git会重新生成不包含B的提交历史
- 强制推送到远程:
git push -f
注意:变基会改写已公开的提交历史,容易导致其他协作成员的本地仓库出现冲突,非必要不要用这个方法。
内容的提问来源于stack exchange,提问作者mariya cherian
相关产品推荐
相关产品推荐

