現(xiàn)在的情景是飘庄,你已經(jīng)在本地創(chuàng)建了一個(gè)Git倉庫后,又想在GitHub創(chuàng)建一個(gè)Git倉庫酌泰,并且讓這兩個(gè)倉庫進(jìn)行遠(yuǎn)程同步媒佣,這樣,GitHub上的倉庫既可以作為備份陵刹,又可以讓其他人通過該倉庫來協(xié)作默伍,真是一舉多得。
首先,登陸GitHub也糊,然后炼蹦,在右上角找到“Create a new repo”按鈕,創(chuàng)建一個(gè)新的倉庫:
在Repository name填入learngit狸剃,其他保持默認(rèn)設(shè)置掐隐,點(diǎn)擊“Create repository”按鈕,就成功地創(chuàng)建了一個(gè)新的Git倉庫:
目前钞馁,在GitHub上的這個(gè)learngit倉庫還是空的虑省,GitHub告訴我們,可以從這個(gè)倉庫克隆出新的倉庫僧凰,也可以把一個(gè)已有的本地倉庫與之關(guān)聯(lián)探颈,然后,把本地倉庫的內(nèi)容推送到GitHub倉庫允悦。
現(xiàn)在膝擂,我們根據(jù)GitHub的提示,在本地的learngit倉庫下運(yùn)行命令:
$git remote add origin git@github.com:michaelliao/learngit.git
請(qǐng)千萬注意隙弛,把上面的michaelliao替換成你自己的GitHub賬戶名架馋,否則,你在本地關(guān)聯(lián)的就是我的遠(yuǎn)程庫全闷,關(guān)聯(lián)沒有問題叉寂,但是你以后推送是推不上去的,因?yàn)槟愕腟SH Key公鑰不在我的賬戶列表中总珠。
添加后屏鳍,遠(yuǎn)程庫的名字就是origin,這是Git默認(rèn)的叫法局服,也可以改成別的钓瞭,但是origin這個(gè)名字一看就知道是遠(yuǎn)程庫。
下一步淫奔,就可以把本地庫的所有內(nèi)容推送到遠(yuǎn)程庫上:
$ 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.
把本地庫的內(nèi)容推送到遠(yuǎn)程山涡,用git push命令,實(shí)際上是把當(dāng)前分支master推送到遠(yuǎn)程唆迁。
由于遠(yuǎn)程庫是空的鸭丛,我們第一次推送master分支時(shí),加上了-u參數(shù)唐责,Git不但會(huì)把本地的master分支內(nèi)容推送的遠(yuǎn)程新的master分支鳞溉,還會(huì)把本地的master分支和遠(yuǎn)程的master分支關(guān)聯(lián)起來,在以后的推送或者拉取時(shí)就可以簡化命令鼠哥。
推送成功后熟菲,可以立刻在GitHub頁面中看到遠(yuǎn)程庫的內(nèi)容已經(jīng)和本地一模一樣:
從現(xiàn)在起看政,只要本地作了提交,就可以通過命令:
$git push origin master
把本地master分支的最新修改推送至GitHub抄罕,現(xiàn)在帽衙,你就擁有了真正的分布式版本庫!
SSH警告
當(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連接給出的一致彩郊。
小結(jié)
要關(guān)聯(lián)一個(gè)遠(yuǎn)程庫,使用命令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)程庫的存在刷后,也就是有沒有聯(lián)網(wǎng)都可以正常工作,而SVN在沒有聯(lián)網(wǎng)的時(shí)候是拒絕干活的渊抄!當(dāng)有網(wǎng)絡(luò)的時(shí)候尝胆,再把本地提交推送一下就完成了同步,真是太方便了护桦!