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

执行git push -f未先pull覆盖同事提交,如何撤销操作恢复分支状态?

Git 强制推送覆盖远程提交的撤销方案

方法一:通过本地 reflog 自行恢复

适用场景:你执行强制推送前,本地曾经拉取过同事的最新提交

  • 执行命令查看分支的HEAD变更历史:
    git reflog show [你的分支名]
  • 在输出的列表中找到你强制推送前的commit哈希值,该记录对应的操作一般为pull/merge,标记为OLD_HEAD_HASH
  • 回退本地分支到该状态:
    git reset --hard OLD_HEAD_HASH
  • 再次强制推送将远程分支恢复到被覆盖前的状态:
    git push origin [你的分支名] --force

方法二:通过同事的本地分支恢复

适用场景:你本地已经找不到被覆盖的提交记录
直接让持有该分支完整提交记录的同事在他本地执行强制推送即可,他的本地分支还保留了被你覆盖前的所有提交:
git push origin [你的分支名]:[你的分支名] --force

后续操作建议

  • 恢复完成后,你可以通过git cherry-pick [你的提交哈希]将你自己的提交拣选到恢复后的分支上,再正常执行pull、push操作即可
  • 后续需要强制推送时,优先使用--force-with-lease参数代替--force,该参数会校验远程分支是否存在你本地没有的提交,避免误覆盖他人代码
  • 所有恢复操作前可先执行git tag temp_backup给当前本地分支打临时标签,避免操作失误丢失代码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 19:36:03