最近由于公司内部搭建了gitlab服务器,需要将原来托管在码云上面的代码迁移到公司内部gitlab,因为想保留之前的change log,所以没有使用copy文件副本,然后再push到repository的方式;网上搜索后,可以使用git push --mirror git-url的方式进行迁移,操作过程中,也遇到了一些问题,记录下来,希望能够帮到遇到相同问题的人。
下面进入正题,在push之前,需要clone一个版本库到本地,在git bash中,录入以下命令
git clone --bare <repository> <directory.git>
其中repository为代码在原服务器的地址,directory.git为版本库存放的目录名。建议先建好存放版本库的文件夹,然后直接git bash切换到对应目录。我是用的命令如下:
image.png
命令执行完成后,在对应目录就会有个*.git的文件夹
image.png
然后使用cd project name.git,将操作路径切换到project name.git下面,其中project name为第一步里面的directory.git 参数的文件名
第二步,检查一下自己的操作用户是否有权限将文件提交到git 的master分支上,这一步非常重要,不然会出现【You are not allowed to push code to this project xxxxxxx , pre-receive hook declined】的错误。
image.png
查看权限在项目的Settings → Repository 下面,展开Protected Branches这一项,可以看到如下信息
image.png
可以看到,我的项目,只有master角色的用户才能够修改master分支。
第三步,确认自己有权限后,就可以进行最后一步的操作了
git push --mirror <repository>
网友评论