git之将代码从一个仓库移动到一个新的仓库(保留分支和提交记录)
·
写在前面
工作中遇到了这样的问题,因为项目所属部门的变更导致需要从当前的仓库移动到一个新的仓库,将整个过程记录在这里。
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,效果一样,也更简单,如下:
点击后录入信息即可:


有了。
写在后面
参考文章列表
更多推荐
所有评论(0)