git迁移仓库方法

最近频繁在尝试托管git服务,免不了各种迁移,不同的git产品也是给出了各种不同的迁移思路,在这里集中整理一下。

下面这种的思路是把原仓库命名为old-origin,再把新仓库加为origin,这样可以随时从旧仓库拉下最新版,然后推到新仓库,即使有人没有及时迁移过来也问题不大。后面确认无误之后再把old-origin删掉即可。是我推荐的一种方式。

cd existing_repo
git remote rename origin old-origin
git remote add origin git@gitlab.com:example/new.git
git push -u origin --all
git push -u origin --tags

这是另一种完全不同的思路,是把远程仓库当做镜像下载过来,再推到新仓库。私以为这是最完整的迁移方式(没有考究),不过我操作还是失败了,因为我们使用过merge request ,会有merge request标签,旧仓库的MR标签跟新仓库的可能不兼容,因此没有成功。最完整的方式但有可能出现兼容问题。推了老半天结果告送我失败了还是有点沮丧。这种方式可能更适合备份恢复。

git clone --bare https://git.example.com/your/project.git your_path
cd your_path
git remote set-url origin git@gitlab.com:example/new.git
git push --mirror

这种其实不是迁移仓库了,如果你觉得仓库有点臃肿,而且提交进了许多无用的东西。同时又不是很需要查找历史提交,可以试试这种方式,就是把代码拎出来重新初始化一个新仓库。偶尔需要查找历史提交可以回旧仓库查找,咱们做迁移,不一定就得把旧的仓库抹掉不是。

cd existing_folder
git init
git remote add origin git@gitlab.com:example/new.git
git add .
git commit
git push -u origin master

发表评论