git仓库迁移
本文最后更新于:2023年8月15日 下午
git仓库迁移
今天学到个新知识,仓库迁移的,遇到一个问题是希望把gitee上面的代码迁移到内网的gitlab上,当然是包括所有的历史记录和分支,tag等等;
主要用法是这样:
1 |
|
注意事项:
一、第一步拉原始仓库镜像,保险起见,最好是找个新文件夹操作,不要影响以前的本地仓库;
我想既然可以拉ssh和http,是不是本地也可以,果然!!
我是这么写的,拉的本地文件夹:
1 |
|
这里涉及另一个知识点,clone有三种方式 :
举个具体的例子:gitlab远程仓库有master,a,b三个分支;
D盘的本地仓库有,master,a,两个本地分支,一个remote的b分支,当前在a分支
1、git clone url
这是我们最常用的方法,
clone远程仓库会有一个master本地分支,a,b两个remote关联远程分支;
clone本地仓库会有一个本地当前分支a,master,b两个remote关联远程分支
2、git clone –bare url
称为裸仓库克隆;
clone远程仓库会有一个master,a,b三个本地分支;
clone本地仓库会有master,a两个本地分支,b丢失;
3、git clone –mirror url
称为镜像仓库克隆
clone远程仓库会有一个master,a,b三个本地分支;
clone本地仓库会有master,a两个本地分支,一个remote的b分支;
所以说mirror是最完美的复刻
二、设置remote
这一步git remote set-url —push origin url;
其中—push 是设置推送的远程地址,还可以设置—fetch的地址,如果两个一致,那就直接:
git remote set-url origin url 就行了。
设置不同的地址之后是这样:
1 |
|
三、推送镜像到gitlab上一个新的空仓库
用新仓库,不然的话,如果是已存在分支的仓库,他会删除你已存在的分支,再推送自己的分支;
这里我又遇到一个报错:deny updating hidden ref
原因是我拉的是本地仓库,会有一些本地分支和remote的远程分支,本地分支能推上去,而这些远程关联的分支称为hidden ref,
它是不允许推到仓库的,这一点我没搞明白,不知道是gitlab设置的原因还是什么;
我的做法是在本地手动checkout 一下这些hidden ref,相当于把他们都变成了本地分支,然后就能推上去了,over!
参考链接:
https://blog.csdn.net/shouhuzhezhishen/article/details/126012426