Git是分布式的版本控制系統(tǒng)块促,也就意味著同一個(gè)Git倉庫可以分布到不同的機(jī)器上荣堰,那么怎么分布呢,開始肯定只有一臺(tái)機(jī)器有一個(gè)原始的版本庫褂乍,Git提供“克隆”這個(gè)操作持隧,別的機(jī)器都可以來克隆這個(gè)初始的版本庫,每臺(tái)機(jī)器上的版本庫并無差別逃片,也無主次之分。
實(shí)際操作中,我們往往找一臺(tái)電腦充當(dāng)服務(wù)器,處于24小時(shí)開機(jī)狀態(tài),其他每個(gè)人都從這個(gè)服務(wù)器倉庫克隆一份到自己的電腦上,并且之后各自修改也都提交到服務(wù)器倉庫里,也從服務(wù)器倉庫中拉取別人的提交.
接下來,介紹如何使用GitHub
這個(gè)神奇的網(wǎng)站,這是一個(gè)提供Git倉庫托管服務(wù)的網(wǎng)站.
- 注冊(cè)Github賬號(hào);
- 由于你的本地倉庫和GitHub倉庫之間的傳輸是通過SSH加密的,所以需要如下設(shè)置:
2.1 創(chuàng)建SSH Key.在用戶主目錄下,進(jìn)入.ssh目錄,查看有沒有id_rsa
(私鑰)和id_rsa_pub
(公鑰)兩個(gè)文件,這兩個(gè)就是SSH Key的密鑰對(duì),其中私鑰千萬不能泄露出去;如果沒有,打開Shell,創(chuàng)建SSH Key:
ssh-keygen -t rsa -C "youremail@example.com"
2.2 登陸Github,打開"Account settings",點(diǎn)擊"SSH and GPC keys"頁面,然后點(diǎn)"Add SSH Key",Title可以任意填寫,在Key文本框中粘貼id_rsa.pub
文件的內(nèi)容:
點(diǎn)擊"Add Key",接下來就應(yīng)該可以看到已經(jīng)添加的Key:
為什么GitHub需要SSH Key呢只酥?因?yàn)镚itHub需要識(shí)別出你推送的提交確實(shí)是你推送的褥实,而不是別人冒充的,而Git支持SSH協(xié)議裂允,所以损离,GitHub只要知道了你的公鑰,就可以確認(rèn)只有你自己才能推送绝编。
不了解SSH原理的可以點(diǎn)擊了解;
當(dāng)然僻澎,GitHub允許你添加多個(gè)Key。假定你有若干電腦十饥,你一會(huì)兒在公司提交窟勃,一會(huì)兒在家里提交,只要把每臺(tái)電腦的Key都添加到GitHub逗堵,就可以在每臺(tái)電腦上往GitHub推送了秉氧。
友情提示,在GitHub上免費(fèi)托管的Git倉庫蜒秤,任何人都可以看到喔(但只有你自己才能改)汁咏。所以,不要把敏感信息放進(jìn)去作媚。
添加遠(yuǎn)程倉庫
在本地倉庫Java
下運(yùn)行命令:
git remote add origin git@github.com:alanluochong/Java
添加后,遠(yuǎn)程庫的名字就叫origin
,這時(shí)Git默認(rèn)的叫法,也可以改成別的,但是origin
這個(gè)名字一看就知道是遠(yuǎn)程庫.
接下來我們就可以把本地庫的內(nèi)容推送到遠(yuǎn)程庫上:
$ git push -u origin master
Counting objects: 149, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (131/131), done.
Writing objects: 100% (149/149), 93.83 KiB | 0 bytes/s, done.
Total 149 (delta 74), reused 0 (delta 0)
remote: Resolving deltas: 100% (74/74), done.
To https://github.com/Alanluochong/spring-boot-mongo.git
* [new branch] master -> master
Branch master set up to track remote branch master from origin.
把本地內(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í)就可以簡化命令.
添加了遠(yuǎn)程倉庫后,只要本地作了提交,就可以通過命令:
$ git push origin master
把本地master
分支的最新修改推送至GitHub,這時(shí)候,你就擁有了真正的分布式版本庫!
從遠(yuǎn)程庫克隆
我們可以使用git clone
克隆一個(gè)本地庫:
$ git clone git@github.com:Alanluochong/spring-boot-mongo.git
當(dāng)然我們也可以使用:
$ git clone https://github.com/Alanluochong/spring-boot-mongo.git
這樣的地址.實(shí)際上,Git支持多種協(xié)議,默認(rèn)的git://
使用ssh,但也可以使用https
等其他協(xié)議.但通過ssh
支持的原生git
協(xié)議速度最快.