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

如何撤销‘git update-ref -d refs/heads/master’操作?求恢复提交记录

恢复误删的Git提交记录解决方案

别慌!Git其实在本地偷偷保留了所有操作的痕迹,咱们一步步把你的提交记录找回来:

  • 第一步:查看Git操作日志(reflog)
    Git的reflog会记录你本地仓库所有引用的变更历史——哪怕你删了分支,这里也能找到之前的提交哈希。执行命令:

    git reflog
    

    你会看到一串类似这样的条目:

    abc1234 HEAD@{3}: commit: 修复登录页样式问题
    def5678 HEAD@{4}: checkout: moving from master to feature-branch
    ghi9012 HEAD@{5}: update-ref: deleting refs/heads/master
    

    重点找在update-ref: deleting refs/heads/master之前的那个提交哈希(比如上面的abc1234),那就是你删除master分支前的最后有效提交。

  • 第二步:恢复master分支
    找到目标哈希后,有两种方式恢复:

    1. 直接重建master分支并切换过去:
      git checkout -b master <找到的提交哈希>
      
    2. 如果当前已经在空的master分支上,直接强制重置到目标哈希:
      git reset --hard <找到的提交哈希>
      
  • 额外选项:从filter-branch的备份恢复
    你之前执行git filter-branch时,Git默认会把原分支备份到refs/original/refs/heads/master。可以先查看这个备份里的记录:

    git log refs/original/refs/heads/master
    

    如果能看到之前的提交,直接把master分支指向这个备份:

    git branch -f master refs/original/refs/heads/master
    git checkout master
    
  • 终极方案:从远程仓库拉取
    如果你之前把master推送到过远程仓库(比如GitHub、GitLab),而且远程分支没有被同步删除操作,直接从远程拉取最新状态覆盖本地:

    git fetch origin
    git reset --hard origin/master
    

后续避坑建议

  • 以后再做filter-branch这类危险操作前,先手动备份分支:git branch master-backup,留好后路总没错。
  • 推荐用更安全高效的git filter-repo替代git filter-branch——它是官方推荐的新一代历史修改工具,不会留下复杂的备份引用,出错概率低很多。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:04:07