如何將一個(gè)項(xiàng)目同時(shí)提交到GitHub和Gitee(碼云)上
如果你是GitHub的開源作者,是否因?yàn)镚itHub訪問慢或圖片不顯示而苦惱?你是否想讓你的代碼讓更多人看到?那么,你可以將一套開源代碼同時(shí)提交到多個(gè)開源平臺(tái)。
當(dāng)然,如果你已經(jīng)在這么做了,但是只是手動(dòng)的復(fù)制、分別上傳,那么更本篇文章更值得你一看。
前言
GitHub幾乎是每個(gè)程序員必逛的地方,但訪問GitHub有一個(gè)明顯的問題,就是網(wǎng)速比較慢,現(xiàn)在GitHub上很多圖片信息還沒辦法正常顯示。
Gitee(碼云)這幾年在國(guó)內(nèi)發(fā)展勢(shì)頭迅猛,下面我們就以一套代碼同時(shí)提交到GitHub和Gitee為示例來,來講解如何配置Git達(dá)到同時(shí)上傳代碼到多個(gè)平臺(tái)。
GitHub上創(chuàng)建一個(gè)倉庫
在GitHub上創(chuàng)建一個(gè)倉庫:

當(dāng)然,如果對(duì)應(yīng)的倉庫已經(jīng)存在,則可跳過此步驟。筆者在GitHub上已經(jīng)存在一個(gè)倉庫了,上圖只是示例。
Gitee上創(chuàng)建對(duì)應(yīng)倉庫
在Gitee上創(chuàng)建一個(gè)對(duì)應(yīng)的倉庫,最好同名:

在創(chuàng)建時(shí),除了填寫必要信息之后,最下面一欄選擇“導(dǎo)入已有倉庫”,然后將GitHub上的倉庫地址(Https形式)copy過來,直接粘貼在對(duì)應(yīng)位置。Gitee會(huì)檢測(cè)并給出提示。
點(diǎn)擊創(chuàng)建,稍等片刻,發(fā)現(xiàn)倉庫已經(jīng)被完美同步過來了:

我的關(guān)于shiro的一個(gè)倉庫地址:https://gitee.com/secbro/shiro 。訪問會(huì)發(fā)現(xiàn),不僅同步過來了,而且在GitHub上無法顯示的圖片瞬間顯示出來了。
從此刻起,你的開源項(xiàng)目曝光率輕松增加了一倍,是不是很簡(jiǎn)單而又很有成就感。
手動(dòng)更新同步
經(jīng)過上面的步驟雖然已經(jīng)完成了庫的同步操作,但你是否發(fā)現(xiàn),當(dāng)你提交代碼到GitHub上時(shí),Gitee上并沒有把修改的代碼同步過來。
此時(shí)可以有兩種方案,先說第一種,手動(dòng)同步。當(dāng)GitHub上的代碼更新了,登錄Gitee在項(xiàng)目名稱處點(diǎn)擊下圖中的圖標(biāo),即可強(qiáng)制同步更新:

這種操作適合非實(shí)時(shí)同步,可能隔一段時(shí)間自己登錄賬號(hào)進(jìn)行一次同步。
Git提交同步
第二種方式是Git同步提交多個(gè)倉庫,這里以Mac操作系統(tǒng)為例,其他操作系統(tǒng)搭建對(duì)應(yīng)找一下相關(guān)的命令和操作。
首先,將GitHub的倉庫clone到本地,比如執(zhí)行以下命令:
git?clone[email protected]:secbr/shiro.git
然后進(jìn)入本地項(xiàng)目的根目錄,在根目錄下會(huì)有一個(gè).git的隱藏目錄。
192:shiro?zzs$?ls?.git
COMMIT_EDITMSG?ORIG_HEAD?description?info??packed-refs
FETCH_HEAD?branches?hooks??logs??refs
HEAD??config??index??objects
找到.git下面的config文件,通過vi命令進(jìn)行修改,筆者原本文件內(nèi)容如下:
[core]
????????repositoryformatversion?=?0
????????filemode?=?true
????????bare?=?false
????????logallrefupdates?=?true
????????ignorecase?=?true
????????precomposeunicode?=?true
[remote?"origin"]
[email protected]:secbr/shiro.git
????????fetch?=?+refs/heads/*:refs/remotes/origin/*
[branch?"main"]
????????remote?=?origin
????????merge?=?refs/heads/main
修改之后變?yōu)椋?/p>
[core]
????????repositoryformatversion?=?0
????????filemode?=?true
????????bare?=?false
????????logallrefupdates?=?true
????????ignorecase?=?true
????????precomposeunicode?=?true
[remote?"origin"]
????????//?github的倉庫地址
[email protected]:secbr/shiro.git
????????//?gitee的倉庫地址
[email protected]:secbro/shiro.git
????????fetch?=?+refs/heads/*:refs/remotes/origin/*
[branch?"main"]
????????remote?=?origin
????????merge?=?refs/heads/main
也就是說,在原來的github倉庫地址下面再添加一個(gè)url配置,指向gitee的地址。
當(dāng)然,這里有一個(gè)前提條件,Gitee和GitHub的賬號(hào)的公私鑰為同一套。
此時(shí)再修改本地代碼,進(jìn)行提交,你會(huì)發(fā)現(xiàn)GitHub和Gitee上的代碼同時(shí)被修改了。是不是很cool?
小結(jié)
很多時(shí)候,我們都在用“假勤奮”來麻痹自己,看起來很努力的樣子。比如當(dāng)遇到上述同步代碼的問題,如果不深入研究一下,只是通過手動(dòng)的形式來搬代碼,雖然看起來很勤奮,但是比不上一行配置,一行命令。
當(dāng)然,上述實(shí)例只是在GitHub和Gitee兩個(gè)倉庫同步代碼,除此之外還可以在GitLab、Bitbucket或是自己搭建的Git服務(wù)器上用同樣的方式同步代碼。
不過,建議根據(jù)具體情況而定,最好不要超過兩個(gè),不然提交倉庫的時(shí)候可能會(huì)因?yàn)榫W(wǎng)絡(luò)原因?qū)е潞臅r(shí)比較長(zhǎng)。
喜歡就三連呀
關(guān)注 Stephen,一起學(xué)習(xí),一起成長(zhǎng)。
