在了解之前农猬,先注冊(cè)github賬號(hào)斤葱,由于你的本地Git倉庫和github倉庫之間的傳輸是通過SSH加密的,所以需要一點(diǎn)設(shè)置:
第一步:創(chuàng)建SSH Key料身。在用戶主目錄下芹血,看看有沒有.ssh
目錄幔烛,如果有囊蓝,再看看這個(gè)目錄下有沒有id_rsa
和id_rsa.pub
這兩個(gè)文件聚霜,如果有的話蝎宇,直接跳過此如下命令,如果沒有的話函卒,打開命令行报嵌,輸入如下命令:
ssh-keygen -t rsa –C “youremail@example.com”
-------
youremail@example.com這里填自己當(dāng)初的郵箱
輸入上述命令后锚国,一直回車玄坦,中間有一個(gè)會(huì)要求輸入密碼。也就是
Enter passphrase:
那里车伞,不輸也行喻喳。最后弄完之后會(huì)在C盤的用戶目錄下看到.ssh
這個(gè)文件夾表伦,里面有id_ras
和id_rsa.pub
代表成功蹦哼。id_rsa
是私鑰,不能泄露出去,id_rsa.pub
是公鑰飘痛,可以放心地告訴任何人。第二步:登陸GitHub剔氏,打開“Account settings”竹祷,“SSH Keys”頁面:
然后,點(diǎn)“Add SSH Key”感憾,填上任意Title阻桅,在Key文本框里粘貼
id_rsa.pub
文件的內(nèi)容:
為什么GitHub需要SSH Key呢嫂沉?因?yàn)镚itHub需要識(shí)別出你推送的提交確實(shí)是你推送的趟章,而不是別人冒充的蚓土,而Git支持SSH協(xié)議,所以谅河,GitHub只要知道了你的公鑰旧蛾,就可以確認(rèn)只有你自己才能推送锨天。
當(dāng)然剃毒,GitHub允許你添加多個(gè)Key赘阀。假定你有若干電腦,你一會(huì)兒在公司提交幅慌,一會(huì)兒在家里提交轰豆,只要把每臺(tái)電腦的Key都添加到GitHub酸休,就可以在每臺(tái)電腦上往GitHub推送了。
最后友情提示渗饮,在GitHub上免費(fèi)托管的Git倉庫互站,任何人都可以看到喔(但只有你自己才能改)云茸。所以标捺,不要把敏感信息放進(jìn)去亡容。
如果你不想讓別人看到Git庫,有兩個(gè)辦法茂缚,一個(gè)是交點(diǎn)保護(hù)費(fèi)脚囊,讓GitHub把公開的倉庫變成私有的悔耘,這樣別人就看不見了(不可讀更不可寫)衬以。另一個(gè)辦法是自己動(dòng)手看峻,搭一個(gè)Git服務(wù)器互妓,因?yàn)槭悄阕约旱腉it服務(wù)器车猬,所以別人也是看不見的尺锚。這個(gè)方法我們后面會(huì)講到的瘫辩,相當(dāng)簡(jiǎn)單伐厌,公司內(nèi)部開發(fā)必備挣轨。
添加遠(yuǎn)程倉庫
現(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è)新的倉庫详囤。如下:
目前,在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:XXX/learngit.git
---
上面的xxx是自己的GitHub的賬戶名H忻凇7踩馈!
【特別提示】關(guān)聯(lián)的時(shí)候耙替,一定要處在當(dāng)前這個(gè)倉庫的文件夾中亚侠。不然是關(guān)聯(lián)不上去的,就像我第一條命令俗扇。輸入進(jìn)去的時(shí)候硝烂,提示我沒有這個(gè)git倉庫。后來才發(fā)現(xiàn)沒有處在這個(gè)倉庫中铜幽,所以用之前的
cd
命令切換文件夾狮杨。然后再關(guān)聯(lián)兩個(gè)倉庫。
下一步,就可以把本地庫的所有內(nèi)容推送到遠(yuǎn)程庫上:
$ git push -u origin master
【特別注意3只摇!0陕!】這里真的是要特別注意悠轩,因?yàn)殚_始我在操作這步驟的時(shí)候何鸡,發(fā)現(xiàn)和網(wǎng)上出現(xiàn)的不一樣。然后就一直找問題。后來發(fā)現(xiàn)有提示的。。。自己傻逼了,現(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ù)器的Ke
y時(shí),需要你確認(rèn)GitHub的Key
的指紋信息是否真的來自GitHub的服務(wù)器,輸入yes
回車即可。
Git會(huì)輸出一個(gè)警告,告訴你已經(jīng)把GitHub的Key
添加到本機(jī)的一個(gè)信任列表里了:
Warning: Permanently added 'github.com' (RSA) to the list of known hosts.
這個(gè)警告只會(huì)出現(xiàn)一次,后面的操作就不會(huì)有任何警告了。
如果你實(shí)在擔(dān)心有人冒充GitHub服務(wù)器,輸入yes
前可以對(duì)照GitHub的RSA Key的指紋信息是否與SSH連接給出的一致。
把本地庫的內(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í)就可以簡(jiǎn)化命令帽氓。推送成功后势腮,可以立刻在github頁面中看到遠(yuǎn)程庫的內(nèi)容已經(jīng)和本地一模一樣了玄渗,
從現(xiàn)在起岁钓,只要本地作了提交翰撑,就可以通過命令:
$ git push origin master
把本地master
分支的最新修改推送至GitHub,現(xiàn)在乓土,你就擁有了真正的分布式版本庫!
從遠(yuǎn)程庫克隆
假如遠(yuǎn)程庫有新的內(nèi)容了,我想克隆到本地來如何克隆呢孙乖?
首先,登錄github,創(chuàng)建一個(gè)新的倉庫舷胜,名字叫testgit如下:
現(xiàn)在遇汞,遠(yuǎn)程庫已經(jīng)準(zhǔn)備好了单料,下一步是用命令git clone
克隆一個(gè)本地庫:
$ git clone git@github.com:XXX/testgit.git
---
XXX是自己的github賬戶名沉颂,testgit.git也是自己的要克隆的那個(gè)遠(yuǎn)程倉庫名
注意把Git庫的地址換成你自己的椰于,然后進(jìn)入testgit目錄看看笛谦,已經(jīng)有README.md文件了刷钢。
如果有多個(gè)人協(xié)作開發(fā),那么每個(gè)人各自從遠(yuǎn)程克隆一份就可以了锋叨。
GitHub給出的地址不止一個(gè),還可以用https://github.com/xxx/testgit.git
這樣的地址瞻赶。實(shí)際上,Git支持多種協(xié)議司倚,默認(rèn)的git://
使用ssh
,但也可以使用https
等其他協(xié)議。
使用https
除了速度慢以外妒穴,還有個(gè)最大的麻煩是每次推送都必須輸入口令阔墩,但是在某些只開放http
端口的公司內(nèi)部就無法使用ssh
協(xié)議而只能用https
蝉娜。
小結(jié)
1.要關(guān)聯(lián)一個(gè)遠(yuǎn)程庫,使用命令git remote add origin git@server-name:path/repo-name.git
罢艾;
2.關(guān)聯(lián)后,使用命令git push -u origin master
第一次推送master
分支的所有內(nèi)容尽纽;
3.此后咐蚯,每次本地提交后,只要有必要弄贿,就可以使用命令git push origin master
推送最新修改春锋;
4.要克隆一個(gè)倉庫,首先必須知道倉庫的地址差凹,然后使用git clone
命令克隆期奔。
5.Git支持多種協(xié)議侧馅,包括https
,但通過ssh支持的原生git協(xié)議速度最快呐萌。