技术碎片:Git代码仓库迁移

接锅不可怕,最怕没有Log。一份代码,有完整提交记录对项目维护是十分重要的。

如何将Git代码从原来的仓库迁移到新的托管站点,并且保留历史提交记录?

有两种方案:

方案一

修改远程仓库路径,并推送代码到新的托管点。

1、修改远程仓库的路径:

1
2
3
git remote set-url origin $remote_git_address
或添加新仓库:
git remote add $nie $remote_git_address

上面,$remote_git_address是新的托管服务器上新建的同名项目地址。nie就是远程仓库的别名了,跟origin一样意思。

2、推送:

1
2
git push origin --all
git push nie --all

会推送主干和所有分支。但是注意,这个命令不会推送标签。需要:

1
git push --tags

方案二

将远程仓库检出镜像到本地,再推送到新的托管点。

1
2
3
git clone --mirror ssh://$original_git_server/$git_repo.git
cd $git_repo.git
git push --mirror ssh://$new_git_server/$git_repo.git

如果在迁移过程中,旧的代码仓库又有了新的提交(我们需要假设总会有”异常“),需要更新并推送:

1
2
git fetch
git push --mirror ssh://$new_git_server/$git_repo.git

Author: Jason

Permalink: http://blog.knpc21.com/tech/git-repo-migrate/

文章默认使用 CC BY-NC-SA 4.0 协议进行许可,使用时请注意遵守协议。

Comments