git上传代码库所有分支到另一个代码仓库的命令

本文介绍了如何使用gitclone,remoteadd,和gitpush操作来安全地将代码从一个Git旧仓库迁移到新仓库,包括直接推送已检出分支、通过refs引用方式推送并排除HEAD分支的方法,以及注意事项。
摘要由CSDN通过智能技术生成

实现思路
直接push, 注意替换成自己的变量根据自己情况选用
git clone <url_of_old_repo> #克隆旧仓库代码
cd  <name_of_old_repo>   #进到本地代码路径即克隆完成后的代码目录
git remote add new-origin <url_of_new_repo>  #新建远程仓库
git push -f --all new-origin  # 推送代码到新的远程仓库上
1
2
3
4
需要特别注意: 这种方式只会推送本地已经检出的分支例如master, 如果其他分支没有检出就不会推送


通过refs引用方式推送(不推荐,会多创建一个HEAD分支)
    git clone <url_of_old_repo> #克隆旧仓库代码
    cd  <name_of_old_repo>   #进到本地代码路径即克隆完成后的代码目录
    git remote add new-origin <url_of_new_repo>  #新建远程仓库
    git push -f new-origin refs/remotes/origin/*:refs/heads/* #推送代码到新的远程仓库上
    git push -f new-origin --delete HEAD #删除新的远端仓库中多余的HEAD分支
1
2
3
4
5
需要特别注意: 由于通配符会导致新的仓库里面会多一个HEAD分支, 所以在最后一步需要删除远端仓库的HEAD分支, 如果你用的是gitlab的话可能会出现远端仓库默认分支是HEAD分支并且无法删除的情况, 不要问我是怎么知道的 😭


通过refs引用方式推送并排除HEAD分支 (推荐方式)

    git clone <url_of_old_repo> #克隆旧仓库代码
    cd  <name_of_old_repo>   #进到本地代码路径即克隆完成后的代码目录
    git remote add new-origin <url_of_new_repo>  #新建远程仓库
    git ls-remote . | grep 'refs/remotes/origin/' | grep -v 'HEAD' | awk -F 'origin/' '{print $2}' | xargs -i git push -f new-origin  --tags refs/remotes/origin/{}:refs/heads/{}  #排除HEAD分支后再推送到新的远端仓库
1
2
3
4
命令解释: git ls-remote . 会打印出origin即原有远端仓库下的所有分支
例如

[aaa@bbb proj.git]$ git ls-remote .
3a14dbb3d42461e7596702ceefd0c3b86d187d76        HEAD
3a14dbb3d42461e7596702ceefd0c3b86d187d76        refs/heads/master
3a14dbb3d42461e7596702ceefd0c3b86d187d76        refs/remotes/origin/HEAD
3a14dbb3d42461e7596702ceefd0c3b86d187d76        refs/remotes/origin/master
cc53d8bd2e66218aefcfb1470e83370110a255c1        refs/remotes/origin/v0.6.0
1
2
3
4
5
6
通过grep 'refs/remotes/origin/' | grep -v 'HEAD' | awk -F 'origin/' '{print $2}' 命令就能获得第二列除HEAD外的所有远端分支名
————————————————
版权声明:本文为CSDN博主「kainx」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_26545503/article/details/123481920

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值