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

推送Git仓库到新远程源时丢失分支,该如何解决?

问题原因
  • 你从SVN迁移来的分支默认是远程跟踪分支(格式像svn/feature/xxx),不是本地分支。git push --all只会推送本地分支,所以只有默认的master本地分支被推去了GitLab。
  • 之后本地分支消失,大概率是你添加GitLab作为origin后,执行了git fetch origin或者误删了原来的SVN远程配置,导致原来的SVN远程跟踪分支被清理,git branch -a就看不到了。
正确推送所有分支的方法
  1. 找回SVN远程跟踪分支
    先检查你的.git目录里有没有refs/remotes/svn文件夹。如果有,先把SVN远程加回来:

    git remote add svn <你原来的SVN仓库地址>
    

    执行完再跑git branch -a,应该就能看到之前的SVN分支了。

  2. 把远程跟踪分支转成本地分支
    可以手动逐个转换,也用脚本批量处理:

    • 手动转换示例(比如分支是svn/feature/pay):
      git checkout -b feature/pay svn/feature/pay
      
    • 批量转换脚本:
      for branch in `git branch -r | grep svn | grep -v master`; do
          git checkout -b ${branch#svn/} $branch
      done
      

    转换完成后,用git branch就能看到所有本地分支。

  3. 推送所有本地分支到GitLab
    确认本地分支都创建好后,执行:

    git push -u origin --all
    

    这次所有本地分支都会被推送到GitLab的origin远程。

本地分支恢复
  • 如果.git目录里还保留着refs/remotes/svn,按上面步骤找回即可,不用重新迁移。
  • 如果这个文件夹已经没了,看看有没有迁移时的备份(比如当时压缩的.git文件夹),恢复备份就能找回分支。
  • 要是既没备份也没残留文件,那只能重新跑SVN到Git的迁移流程了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 18:31:50