最近项目组用上了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