如何完整迁移git仓库到gitlab

51 阅读2分钟

最近项目组用上了gitlab来管理代码,需要把以前托管在其他地方的代码迁移过来,发现有些同事在迁移时并不考虑完整迁移,只想着用git push把代码迁移过来就完了(表示吃惊)。于是告诉同事如何操作能够完整迁移,不仅包含代码,还包含所有分支、tag和所有commit记录。(其实也是一搜就有的事~)

步骤

1、打开命令行工具

2、使用bare来clone原来代码仓库

git clone --bare 旧代码仓库地址

3、在命令行工具切到拉下来的代码仓库文件目录

cd 旧代码仓库.git

注意这里下载后的文件夹名称后缀是.git

4、使用mirror执行push仓库

git push --mirror 新仓库地址

会遇到什么坑,如何解决

push的时候提示 “You are not allowed to push code to protected branches on this project”

原因:因为某分支(一般是main分支,除非特殊设置了)为保护分支,没有权限修改。

解决1、把分支改成不受保护的

要进行这个操作,得保证是有项目的操作权限(gitlab的developer角色没有该权限,可以找Maintainer、Owner角色的人来操作)。

在gitlab进入新代码仓库,点击Repository下的branch,在右边显示面板点击project settings,进入后,展开Protected branches

把受保护的分支改成unProtected

或者

把protect的分支的Allowed to push勾选上Developer和Maintainers,和设置成Allowed to force push

解决2、把当前push仓库的人的操作权限提高为Owner。

push的时候提示failed to push some refs to XXX

原因:是不是旧仓库的主分支是master,而新仓库的主分支是main

解决1、修改master分支为mian分支,推送到远程后再执行上面所述的clone --bare及后续操作

解决2、删除master分支,新建main分支,均推送到远程后再执行上面所述的clone --bare及后续操作