現(xiàn)在的情景是鹊汛,你已經(jīng)在本地創(chuàng)建了一個(gè)Git倉(cāng)庫(kù)后硼端,又想在GitHub創(chuàng)建一個(gè)Git倉(cāng)庫(kù)萧芙,并且讓這兩個(gè)倉(cāng)庫(kù)進(jìn)行遠(yuǎn)程同步给梅,這樣,GitHub上的倉(cāng)庫(kù)既可以作為備份双揪,又可以讓其他人通過該倉(cāng)庫(kù)來協(xié)作动羽,真是一舉多得。
首先渔期,登陸GitHub运吓,然后,在右上角找到“Create a new repo”按鈕疯趟,創(chuàng)建一個(gè)新的倉(cāng)庫(kù):
在Repository name填入learngit拘哨,其他保持默認(rèn)設(shè)置,點(diǎn)擊“Create repository”按鈕信峻,就成功地創(chuàng)建了一個(gè)新的Git倉(cāng)庫(kù):
目前倦青,在GitHub上的這個(gè)learngit倉(cāng)庫(kù)還是空的,GitHub告訴我們盹舞,可以從這個(gè)倉(cāng)庫(kù)克隆出新的倉(cāng)庫(kù)姨夹,也可以把一個(gè)已有的本地倉(cāng)庫(kù)與之關(guān)聯(lián),然后矾策,把本地倉(cāng)庫(kù)的內(nèi)容推送到GitHub倉(cāng)庫(kù)磷账。
現(xiàn)在,我們根據(jù)GitHub的提示贾虽,在本地的learngit倉(cāng)庫(kù)下運(yùn)行命令:
$git remote add origin git@github.com:michaelliao/learngit.git
請(qǐng)千萬(wàn)注意逃糟,把上面的michaelliao替換成你自己的GitHub賬戶名,否則蓬豁,你在本地關(guān)聯(lián)的就是我的遠(yuǎn)程庫(kù)绰咽,關(guān)聯(lián)沒有問題,但是你以后推送是推不上去的地粪,因?yàn)槟愕腟SH Key公鑰不在我的賬戶列表中取募。
添加后,遠(yuǎn)程庫(kù)的名字就是origin蟆技,這是Git默認(rèn)的叫法玩敏,也可以改成別的斗忌,但是origin這個(gè)名字一看就知道是遠(yuǎn)程庫(kù)。
下一步旺聚,就可以把本地庫(kù)的所有內(nèi)容推送到遠(yuǎn)程庫(kù)上:
$ git push -u origin masterCounting objects: 19, done.Delta compression using up to 4 threads.Compressing objects: 100% (19/19), done.Writing objects: 100% (19/19), 13.73 KiB, done.Total 23 (delta 6), reused 0 (delta 0)To git@github.com:michaelliao/learngit.git * [new branch]? ? ? master -> masterBranch mastersetuptotrack remote branch masterfromorigin.
把本地庫(kù)的內(nèi)容推送到遠(yuǎn)程织阳,用git push命令,實(shí)際上是把當(dāng)前分支master推送到遠(yuǎn)程砰粹。
由于遠(yuǎn)程庫(kù)是空的唧躲,我們第一次推送master分支時(shí),加上了-u參數(shù)碱璃,Git不但會(huì)把本地的master分支內(nèi)容推送的遠(yuǎn)程新的master分支弄痹,還會(huì)把本地的master分支和遠(yuǎn)程的master分支關(guān)聯(lián)起來,在以后的推送或者拉取時(shí)就可以簡(jiǎn)化命令嵌器。
推送成功后肛真,可以立刻在GitHub頁(yè)面中看到遠(yuǎn)程庫(kù)的內(nèi)容已經(jīng)和本地一模一樣:
從現(xiàn)在起,只要本地作了提交嘴秸,就可以通過命令:
$git push origin master
把本地master分支的最新修改推送至GitHub毁欣,現(xiàn)在,你就擁有了真正的分布式版本庫(kù)岳掐!
當(dāng)你第一次使用Git的clone或者push命令連接GitHub時(shí)凭疮,會(huì)得到一個(gè)警告:
The authenticity of host 'github.com (xx.xx.xx.xx)' can't be established.
RSA key fingerprint is xx.xx.xx.xx.xx.
Are you sure you want to continue connecting (yes/no)?
這是因?yàn)镚it使用SSH連接,而SSH連接在第一次驗(yàn)證GitHub服務(wù)器的Key時(shí)串述,需要你確認(rèn)GitHub的Key的指紋信息是否真的來自GitHub的服務(wù)器执解,輸入yes回車即可。
Git會(huì)輸出一個(gè)警告纲酗,告訴你已經(jīng)把GitHub的Key添加到本機(jī)的一個(gè)信任列表里了:
Warning: Permanently added'github.com'(RSA) to thelistof known hosts.
這個(gè)警告只會(huì)出現(xiàn)一次衰腌,后面的操作就不會(huì)有任何警告了。
如果你實(shí)在擔(dān)心有人冒充GitHub服務(wù)器觅赊,輸入yes前可以對(duì)照GitHub的RSA Key的指紋信息是否與SSH連接給出的一致右蕊。
要關(guān)聯(lián)一個(gè)遠(yuǎn)程庫(kù),使用命令git remote add origin git@server-name:path/repo-name.git吮螺;
關(guān)聯(lián)后饶囚,使用命令git push -u origin master第一次推送master分支的所有內(nèi)容;
此后鸠补,每次本地提交后萝风,只要有必要,就可以使用命令git push origin master推送最新修改紫岩;
分布式版本系統(tǒng)的最大好處之一是在本地工作完全不需要考慮遠(yuǎn)程庫(kù)的存在规惰,也就是有沒有聯(lián)網(wǎng)都可以正常工作,而SVN在沒有聯(lián)網(wǎng)的時(shí)候是拒絕干活的泉蝌!當(dāng)有網(wǎng)絡(luò)的時(shí)候歇万,再把本地提交推送一下就完成了同步揩晴,真是太方便了!