写在前面

工作中遇到了这样的问题,因为项目所属部门的变更导致需要从当前的仓库移动到一个新的仓库,将整个过程记录在这里。

1:正文

1.1:当前情况

假定我们现在有maste,test分支,并且都已经提交了很多次,如下:

dell9020@DESKTOP-C3DTETT MINGW64 /d/test/aaaa/yyyy (master)
$ git branch -vv
* master cef3266 [origin/master] add 111
  test   c43844b [origin/test] add 22 txt

我们有一个新的仓库地址为https://gitee.com/dongsir2020/mmmmm.git
接着就来将master分支和test分支都移动到这个新仓库,并保留提交记录。

1.2:开干

1.2.1:创建一个新的远端仓库名字,并关联到新的仓库

  • 起名字(需要指定一个远端分支)
$ git remote add origin4 master

dell9020@DESKTOP-C3DTETT MINGW64 /d/test/aaaa/yyyy (master)
$ git remote -vv
origin  https://gitee.com/dongsir2020/zzzzzz.git (fetch)
origin  https://gitee.com/dongsir2020/zzzzzz.git (push)
origin4 master (fetch)
origin4 master (push)

这里origin4是随意起的名字,你叫jack,tom,lucy,dogshit都可以。

  • 关联到新仓库
$ git remote set-url origin4 https://gitee.com/dongsir2020/mmmmm.git

dell9020@DESKTOP-C3DTETT MINGW64 /d/test/aaaa/yyyy (master)
$ git remote -vv
origin  https://gitee.com/dongsir2020/zzzzzz.git (fetch)
origin  https://gitee.com/dongsir2020/zzzzzz.git (push)
origin4 https://gitee.com/dongsir2020/mmmmm.git (fetch)
origin4 https://gitee.com/dongsir2020/mmmmm.git (push) 

1.2.2:推送master分支

  • 切换到master分支
$ git checkout master
Already on 'master'
Your branch is up to date with 'origin/master'.

dell9020@DESKTOP-C3DTETT MINGW64 /d/test/aaaa/yyyy (master)
$ git branch
* master
  test 
  • 推送master分支到远端仓库
    推送前记得更新代码
$ git push origin4 master:master
Enumerating objects: 7, done.
Counting objects: 100% (7/7), done.
Delta compression using up to 8 threads
Compressing objects: 100% (6/6), done.
Writing objects: 100% (7/7), 2.36 KiB | 806.00 KiB/s, done.
Total 7 (delta 0), reused 4 (delta 0), pack-reused 0
remote: Powered by GITEE.COM [1.1.5]
remote: Set trace flag 984d8b95
To https://gitee.com/dongsir2020/mmmmm.git
 * [new branch]      master -> master 

但是此时关联的远端分支还是origin,如下:

$ git branch -vv
* master cef3266 [origin/master] add 111
  test   c43844b [origin/test] add 22 txt

所以需要修改关联到新的远端仓库。

  • 关联到新的远端仓库
$ git branch --set-upstream-to=origin4/master
Branch 'master' set up to track remote branch 'master' from 'origin4'.

dell9020@DESKTOP-C3DTETT MINGW64 /d/test/aaaa/yyyy (master)
$ git branch -vv
* master cef3266 [origin4/master] add 111
  test   c43844b [origin/test] add 22 txt

master cef3266 [origin4/master] add 111中的origin4/master已经对了。

1.2.3:推送test分支

同master。

1.2.4:修改远端仓库名字为origin(非必须)

远端仓库叫什么名字其实无所谓,但因为习惯了默认名称origin所以总觉得怪怪的,所以还是修改为origin:

$  git remote rm origin 
$ git remote rename origin4 origin
$ git remote -vv
origin  https://gitee.com/dongsir2020/mmmmm.git (fetch)
origin  https://gitee.com/dongsir2020/mmmmm.git (push)

就对了。

1.2.5:最终

最后新仓库就有了需要的分支,并保留了提交记录了:
在这里插入图片描述

2:其他方案

2.1:fork

如果有仓库操作权限的话可以直接fork,效果一样,也更简单,如下:
在这里插入图片描述
点击后录入信息即可:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
有了。

写在后面

参考文章列表

从一个git仓库迁移代码到另一个git仓库(亲测有效版)(转)

关联Git本地分支与远程分支

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐