如何恢复GitHub上被误删的全部分支?是否需要逐个恢复?
恢复误删分支的操作方案
问题原因
你执行的git push --mirror作用是让远端仓库的分支、标签等引用完全和本地镜像仓库保持一致,你本地的镜像克隆是旧仓库的内容,没有新仓库原有分支的引用,所以推送后新仓库的原有分支被全部清除。
无需逐个恢复的批量恢复方案
场景1:存在新仓库的完整本地克隆(或其他同事持有该克隆)
这是成本最低的恢复方式,操作步骤如下:
- 进入持有新仓库克隆的本地目录,先确认远端地址指向正确:
git remote -v - 如果本地没有拉取过新仓库的全部分支,先执行以下命令同步所有远端分支到本地:
for remote_branch in $(git branch -r | grep -v 'HEAD'); do git checkout --track $remote_branch done
- 批量推送所有本地分支到新仓库:
git push origin --all - 如果需要恢复原有标签,追加执行:
git push origin --tags
场景2:无可用本地克隆
主流代码托管平台(GitHub、GitLab、Gitee等)都内置了删除分支的恢复功能,支持批量操作:
- 进入新仓库的管理后台,找到「分支管理」-「已删除分支」(不同平台路径略有差异)
- 列表中会展示近期所有被删除的分支,支持批量选中后一键恢复,无需单个操作
- 部分平台还支持直接撤销你这次
git push --mirror的推送操作,一次性还原所有分支状态
后续迁移单个分支的正确操作
如果只是要迁移旧仓库的某一个分支到新仓库,不要使用--mirror参数,改用以下命令:
git push new-origin 旧仓库分支名:新仓库目标分支名
内容的提问来源于stack exchange,提问作者Blaze
相关产品推荐
相关产品推荐

