git仓库迁移操作-git mirror

原创文章
声明:作者声明此文章为原创,未经作者同意,请勿转载,若转载,务必注明本站出处,本平台保留追究侵权法律责任的权利。
全栈老韩
全栈工程师,擅长iOS App开发、前端(vue、react、nuxt、小程序&Taro)开发、Flutter、React Native、后端(midwayjs、golang、express、koa)开发、docker容器、seo优化等。

我们在开发过程中,有时候会遇到要迁移代码仓库的场景,比如代码之前托管在github上,但是想要迁移到其他的托管平台(像阿里的云效、腾讯的e-coding、公司的gitlab等),或者从一个仓库迁移到同托管平台的另一个仓库repository,并且要保持将所有的提交记录、标签等内容都同步过去,是可以通过git自带的命令实现的。

这篇文章简要描述一下如何开始做代码的迁移。

  1. 已有某一个git仓库,比如我们把这个仓库叫仓库A,它的git clone地址假设为:
复制代码
https形式:https://github.com/A.git
ssh形式:git@github.com:XXX/A.git

需要将仓库A迁移到仓库B.

  1. 新建仓库B
    在你想要迁移到的托管平台上,新建一个仓库,切记以下内容:

新建仓库时不要选择添加 README、.gitignore 或许可协议,确保仓库为空

仓库B的地址假设为:

复制代码
https形式:https://github.com/B.git
ssh形式:git@github.com:XXX/B.git
  1. 克隆仓库A的裸代码
    裸仓库bare repository中包含了所有git对象和历史记录,但是没有工程文件。

选择一个文件夹位置,比如在桌面上新建一个文件夹:git_dir

terminal 复制代码
cd ~/Desktop # 进入到桌面
mkdir git_dir # 创建文件夹git_dir

然后终端进入到这个文件夹中,执行克隆裸仓库.

terminal 复制代码
git clone --bare git@github.com:XXX/A.git # 这里的git地址是仓库A的git地址

生成的裸仓库就是一个.git为扩展名的文件夹.

  1. 进入.git的裸仓库文件夹中
terminal 复制代码
cd A.git # 进入生成的以.git扩展名的文件夹中
  1. 推送裸仓库到仓库B
terminal 复制代码
git push --mirror git@github.com:XXX/B.git # 这里的git地址就是你需要的新仓库git地址

--mirror参数可以将所有分支、标签和远程引用全部推送到目标仓库

  1. 结束
    上面的几个步骤执行完成后,就可以登录到仓库B,看仓库B中的代码、标签、分支、引用等都完整的从仓库A中拷贝过来了。

希望对有的同学有帮助,到此结束。

暂无评论,快来发表第一条评论吧