git 仓库迁移到另外地址,怎么做
之前是这么干的,更改git地址,然后push。举个例子
$ git remote -v #查看远程地址
origin git@git.gisfly.xyz:project/frontend.git (fetch)
origin git@git.gisfly.xyz:project/frontend.git (push)
先在 git 创建一个项目,地址是 git@git.gisfly.xyz:test/frontend.git
然后通过 remote set-url
强制更改远程地址
$ git remote set-url origin git@git.gisfly.xyz:test/frontend.git
$ git remote -v
origin git@git.gisfly.xyz:test/frontend.git (fetch)
origin git@git.gisfly.xyz:test/frontend.git (push)
最后全部push上去
$ git push -u origin --all
$ git push -u origin --tags
或者不用 remote set-url
,把原来的重命名,再新地址设置为origin
$ git remote rename origin old-origin
$ git remote add origin git@git.gisfly.xyz:test/frontend.git
$ git push -u origin --all
$ git push -u origin --tags
这时候会把所有本地分支都上传,然而,不是所有远程分支都能一起上传,该方法应该满足不了需求。要全部远程分支一起迁移,则需要使用 git push --mirror
。下面重新实现整个过程:
- 在git服务器新建一个项目,命名
new_frontend
,地址为git@git.gisfly.xyz:test/new_frontend.git
- 重新 clone 原来整个项目,使用
--bare
参数
$ git clone --bare git@git.gisfly.xyz:project/frontend.git
这时本地生成了frontend.git
文件夹,带后缀 .git
- push 到新的项目地址
# 进入本地 git 仓库
$ cd frontend.git
# push 到新仓库
$ git push --mirror git@git.gisfly.xyz:test/new_frontend.git
至此,已将 git 仓库全部迁到新地址,包括所有分支。
注:git@git.gisfly.xyz:test/new_frontend.git
类似这种git地址,需要在git服务器上添加密钥