如何做 Git 迁移

背景

最近在做项目迁移的相关工作,目的是需要将git@gitlab.xxx.com:A-ios/a.git地址的项目库迁移到git@gitlab.xxx.com:B-ios/b.git地址库里面;

git@gitlab.xxx.com:A-ios/a.git--->git@gitlab.xxx.com:B-ios/b.git

遇到的问题

最开始想到的办法是直接把 a 项目的代码clone下来,创建一个b项目也 clone 下来,然后把 a 项目的代码 copy 到 b 项目里,但是这样有 2 个问题:

  1. a 项目的分支无法全部迁移到 b 项目里,只能 copy 文件所在的分支。
  2. a 项目提交的 commit 的节点无法迁移到 b 项目里, tag 也无法迁移。

解决的方式

1. 将a代码从之前的仓库中拉下来

git clone git@gitlab.xxx.com:A-ios/a.git

2. 拉取分支信息

git branch -a

3. 拉取远程分支至本地

git checkout master
git checkout dev

4. 更改本地 gitlab 地址为新的 gitlab 地址(核心步骤)

git remote set-url origin git@gitlab.xxx.com:B-ios/b.git

主要涉及到 git remote 用法
git remote -v 查看现有远程仓库的地址url
1. 修改命令
git remote set-url origin <URL> 更换远程仓库地址,把<URL>更换为新的url地址
2. 先删后加
git remote rm origin
git remote add origin remote_git_address(remote_git_address为新服务器gitLab上新建的同名项目地址)

5. 本地仓库推送到远端

git push origin --all //这里推送的是在 第 3 步中拉取的本地分支

6. 推送所有tag到远端

git tag    // 查看远端tag列表
git push --tags  // 推送所有标签到远端

结尾

至此我们就完成了一个项目的 Git 迁移。