簡介
我們開發(fā)的時(shí)候,需要把代碼同步到多個(gè)遠(yuǎn)程倉庫中去。此次項(xiàng)目開發(fā),我們首先基于gitlib開發(fā),開發(fā)到一定階段,我們準(zhǔn)備開源,于是上線碼云gitee,這時(shí)新建了一個(gè)倉庫,以前的提交記錄留在了內(nèi)網(wǎng)的gitlab,并且以后的開發(fā)均在碼云gitee進(jìn)行。而后,因?yàn)閮?nèi)網(wǎng)項(xiàng)目需求,需要同步管理倉庫gitlab和gitee,這個(gè)時(shí)候就需要同步代碼了。
方法有很多,我們介紹一種。
1.關(guān)聯(lián)遠(yuǎn)程庫
我們以gitee為主體,從gitee中clone出一份本地倉庫。然后,關(guān)聯(lián)gitlab的遠(yuǎn)程倉庫:
git remote add gitlab git@10.12.3.198:luoshunyuan/OneOS-Lite.git
關(guān)聯(lián)完成后,使用git remote -v查看:
gitlab git@10.12.3.198:luoshunyuan/OneOS-Lite.git (fetch)
gitlab git@10.12.3.198:luoshunyuan/OneOS-Lite.git (push)
origin git@gitee.com:xuxeu/OneOS-Lite.git (fetch)
origin git@gitee.com:xuxeu/OneOS-Lite.git (push)
2.拉取gitee和gitlab代碼
因?yàn)?,我們的提交都?code>gitee為主,因此,首先拉取gitee的代碼。
git pull
我們?cè)诘谝淮瓮降臅r(shí)候,需要拉取gitlab代碼,并創(chuàng)建本地分支:
git clone git@10.12.3.198:luoshunyuan/OneOS-Lite.git
git checkout -b dev origin/dev
3.提交到gitlab
在關(guān)聯(lián)好的gitee倉庫中,執(zhí)行命令來合并gitee代碼到gitlab倉庫中:
git push gitlab dev
這是,如果報(bào)錯(cuò)無法推送,則可以強(qiáng)制推送:
git push gitlab dev -f
4.合并歷史記錄
執(zhí)行了第三步操作后,gitlab遠(yuǎn)程倉庫中將只會(huì)存在強(qiáng)制推送的gitee的歷史記錄了。
但,還好我們之前在第二步,有拉過gitlab代碼,并創(chuàng)建了本地分支。因此我們執(zhí)行拉取操作,這時(shí)它會(huì)提醒我們:
fatal: refusing to merge unrelated histories
這是可以執(zhí)行以下命令,來忽略版本不同造成的影響:
git pull --allow-unrelated-histories
然后,進(jìn)行合并merge,推送代碼。這時(shí),我們可以在遠(yuǎn)程倉庫上看到,所有的歷史記錄都已經(jīng)回來了。
5.之后的同步
之后的同步就比較簡單了。每次都從gitee遠(yuǎn)程倉庫拉取代碼到本地,然后再次推送到gitlab即可。
關(guān)注&&聯(lián)系
gitee: https://gitee.com/cmcc-oneos/OneOS-Lite
docs: https://oneos-lite.com/
公眾號(hào):CMCC-OneOS