最近由于公司內(nèi)部搭建了gitlab服務器擒滑,需要將原來托管在碼云上面的代碼遷移到公司內(nèi)部gitlab人柿,因為想保留之前的change log馁菜,所以沒有使用copy文件副本贡珊,然后再push到repository的方式最爬;網(wǎng)上搜索后,可以使用git push --mirror git-url的方式進行遷移门岔,操作過程中爱致,也遇到了一些問題,記錄下來寒随,希望能夠幫到遇到相同問題的人糠悯。
下面進入正題,在push之前妻往,需要clone一個版本庫到本地互艾,在git bash中,錄入以下命令
git clone --bare <repository> <directory.git>
其中repository為代碼在原服務器的地址讯泣,directory.git為版本庫存放的目錄名纫普。建議先建好存放版本庫的文件夾,然后直接git bash切換到對應目錄好渠。我是用的命令如下:
命令執(zhí)行完成后昨稼,在對應目錄就會有個*.git的文件夾
然后使用cd project name.git,將操作路徑切換到project name.git下面晦墙,其中project name為第一步里面的directory.git 參數(shù)的文件名
第二步悦昵,檢查一下自己的操作用戶是否有權(quán)限將文件提交到git 的master分支上,這一步非常重要晌畅,不然會出現(xiàn)【You are not allowed to push code to this project xxxxxxx 但指, pre-receive hook declined】的錯誤。
查看權(quán)限在項目的Settings → Repository 下面抗楔,展開Protected Branches這一項棋凳,可以看到如下信息
可以看到,我的項目连躏,只有master角色的用戶才能夠修改master分支剩岳。
第三步,確認自己有權(quán)限后入热,就可以進行最后一步的操作了
git push --mirror <repository>