有時候會遇到需要更換代碼托管平臺庶喜,從github桑寨,gitlab或者Bitbucket遷移到其它平臺,過程中可能遇到不少問題唯沮,本文從是否保留歷史提交記錄兩種需求出發(fā)脖旱,介紹一下基于git托管平臺的遷移方法。
一介蛉、要求保留所有的提交記錄的遷移方法
1萌庆、從舊的托管倉庫中克隆一個裸版本庫。
git clone –bare git://github.com/yourname/src_project.git
--bare:克隆一個裸版本庫币旧。
裸版本庫的名字一般用原來的倉庫名加上.git后綴踊兜,它不包含工作區(qū),直接就是版本庫的內(nèi)容佳恬,包含的文件如下圖所示捏境,和正常版本庫中.git文件夾的內(nèi)容差不多。
2毁葱、到新的Git服務(wù)器上創(chuàng)建一個新項目垫言,比如華為軟件開發(fā)云配置管理服務(wù)。
新倉庫地址:
git@codehub-cn-northeast-1.devcloud.hwclouds.com:f9c39cc7617a4caf9cb03d6bc8c3ac8a/dst_project.git
3倾剿、將本地裸版本以鏡像的方式推送到華為軟件開發(fā)云倉庫中筷频。
git push –mirrorgit@codehub-cn-northeast-1.devcloud.hwclouds.com:f9c39cc7617a4caf9cb03d6bc8c3ac8a/dst_project.git
--mirror指定refs/下的所有文件鏡像的推送到遠程倉庫,而不是命名每個ref一一推送前痘。本地更新的refs將被強制更新到遠端倉庫凛捏,本地刪除的refs也將強制從遠端倉庫刪除。
因為本地和遠端倉庫是兩個不同的origin芹缔,所以如果不選擇鏡像推送坯癣,會產(chǎn)生如下錯誤:
提示:華為軟件開發(fā)云默認對master分支開啟分支保護,因此推送之前要解除分支保護最欠。
4示罗、刪除本地裸版本倉庫惩猫,src_project.git文件夾。
5蚜点、從新的托管服務(wù)器上克隆一份代碼到本地轧房。
git clonegit@codehub-cn-northeast-1.devcloud.hwclouds.com:f9c39cc7617a4caf9cb03d6bc8c3ac8a/dst_project.git
二、無需保留提交記錄的遷移方法
1绍绘、從舊的托管倉庫中下載一套代碼奶镶。僅僅是代碼,沒有g(shù)it版本管理相關(guān)內(nèi)容陪拘。
2实辑、到新的Git服務(wù)器上創(chuàng)建一個新項目。
新倉庫地址:
git@codehub-cn-northeast-1.devcloud.hwclouds.com:f9c39cc7617a4caf9cb03d6bc8c3ac8a/dst_project.git
3藻丢、git init? #在本地代碼根目錄文件夾下初始化倉庫
4、git remote add origingit@codehub-cn-northeast-1.devcloud.hwclouds.com:f9c39cc7617a4caf9cb03d6bc8c3ac8a/dst_project.git
5摄乒、git pull origin master –rebase? #從新托管倉庫上拉去已存在的內(nèi)容
6悠反、git add .
7、git commit
8馍佑、git push --set-upstream origin master? #關(guān)聯(lián)上游托管倉庫并推送舊代碼