git學習筆記(3)

Git的特點功能之一:遠程倉庫git

  Git是分佈式版本控制系統,同一個Git倉庫,能夠分佈到不一樣的機器上。怎麼分佈呢?最先,確定只有一臺機器有一個原始版本庫,此後,別的機器能夠「克隆」這個原始版本庫,並且每臺機器的版本庫其實都是同樣的,並無主次之分。這就須要兩臺以上的機子才能玩的起來,但其實一臺機子上面也是能夠克隆多個版本庫的,只要不在同一個目錄下,但這樣作徹底沒有意義,若是硬盤壞掉,全部的倉庫都會沒掉。github

  實際狀況每每是這樣,找一臺電腦充當服務器的角色,天天24小時開機,其餘每一個人都從這個「服務器」倉庫克隆一份到本身的電腦上,而且各自把各自的提交推送到服務器倉庫裏,也從服務器倉庫中拉取別人的提交。能夠本身搭建一個徹底運行Gitd的服務器,可是對於我的而言,徹底小題大作了,好在這個世界上有個叫GitHub的神奇的網站,從名字就能夠看出,這個網站就是提供Git倉庫託管服務的,因此,只要註冊一個GitHub帳號,就能夠免費得到Git遠程倉庫。面試

  接下來,講解下如何學會使用了GitHub。服務器

一、註冊和使用GitHub網絡

  首先,須要先註冊一個GitHub帳號,而後因爲你的本地Git倉庫和GitHub倉庫之間的傳輸是經過SSH加密的,因此,須要一點設置:ssh

  (1)第1步:建立SSH Key。在用戶主目錄下,看看有沒有.ssh目錄,若是有,再看看這個目錄下有沒有id_rsaid_rsa.pub這兩個文件,若是已經有了,可直接跳到下一步。若是沒有,打開Shell(Windows下打開Git Bash),建立SSH Key:分佈式

$ ssh-keygen -t rsa -C "youremail@example.com"

  你須要把郵件地址換成你本身的郵件地址,而後一路回車,使用默認值便可,因爲這個Key也不是用於軍事目的,因此也無需設置密碼。若是一切順利的話,能夠在用戶主目錄裏找到.ssh目錄,裏面有id_rsaid_rsa.pub兩個文件,這兩個就是SSH Key的祕鑰對,id_rsa是私鑰,不能泄露出去,id_rsa.pub是公鑰,能夠放心地告訴任何人。網站

  (2)第2步:登錄GitHub,打開「Account settings」,「SSH and GPG Keys」頁面;而後,點「New SSH Key」,填上任意Title,在Key文本框裏粘貼id_rsa.pub文件的內容;點「Add Key」,你就應該看到已經添加的Key:this

  爲何GitHub須要SSH Key呢?由於GitHub須要識別出你推送的提交確實是你推送的,而不是別人冒充的,而Git支持SSH協議,因此,GitHub只要知道了你的公鑰,就能夠確認只有你本身才能推送。加密

  固然,GitHub容許你添加多個Key。假定你有若干電腦,你一下子在公司提交,一下子在家裏提交,只要把每臺電腦的Key都添加到GitHub,就能夠在每臺電腦上往GitHub推送了。

  最後友情提示,在GitHub上免費託管的Git倉庫,任何人均可以看到喔(但只有你本身才能改)。因此,不要把敏感信息放進去。

  若是你不想讓別人看到Git庫,有兩個辦法,一個是交點保護費,讓GitHub把公開的倉庫變成私有的,這樣別人就看不見了(不可讀更不可寫)。另外一個辦法是本身動手,搭一個Git服務器,由於是你本身的Git服務器,因此別人也是看不見的。GitHbu是很是好的保護代碼的手段,即便電腦發生任何問題和故障,也能很好地恢復代碼。

二、添加遠程倉庫

  在你的本地建立了一個Git倉庫後,而後在GitHub也建立一個Git倉庫,而且讓這兩個倉庫進行遠程同步,這樣,GitHub上的倉庫既能夠做爲備份,又可讓其餘人經過該倉庫來協做,很是方便,並且也可以做爲你面試時候的資本。

  (1)首先,登錄GitHub,而後,在右上角找到「Create a new repo」按鈕,建立一個新的倉庫,在Repository name填入名字,其餘保持默認設置,點擊「Create repository」按鈕,就成功地建立了一個新的Git倉庫;

  (2)目前,在GitHub上的這個learngit倉庫仍是空的,GitHub告訴咱們,能夠從這個倉庫克隆出新的倉庫,也能夠把一個已有的本地倉庫與之關聯,而後,把本地倉庫的內容推送到GitHub倉庫。如今,咱們根據GitHub的提示,在本地的倉庫下運行命令:

$ git remote add origin git@github.com:Allen-Sq/learngit.git

  以上命令就是添加遠程庫到GitHub上,遠程庫的名字就是 origin ,這是Git默認的叫法,也能夠改爲別的,可是這個名字一看就知道是遠程庫。(注意Allen-Sq爲本身的GitHub帳號)

  (3)下一步,就能夠把本地庫的全部內容推送到遠程庫上:

$ git push -u origin master
Counting 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:Allen-Sq/learngit.git
 * [new branch]      master -> master
Branch master set up to track remote branch master from origin.

  把本地庫的內容推送到遠程,用 git push 命令,其實是把當前分支 master 推送到遠程。因爲遠程庫是空的,咱們第一次推送 master 分支時,加上了 -u 參數,Git不但會把本地的 master 分支內容推送的遠程新的 master 分支,還會把本地的 master 分支和遠程的 master 分支關聯起來,在之後的推送或者拉取時就能夠簡化命令。

  推送成功後,能夠馬上在GitHub頁面中看到遠程庫的內容已經和本地如出一轍。從如今起,只要本地做了提交,就能夠經過命令:

$ git push origin master

  把本地 master 分支的最新修改推送至GitHub,如今,你就擁有了真正的分佈式版本庫!

tips:

SSH警告:當你第一次使用Git的 clone 或者 push 命令鏈接GitHub時,會獲得一個警告,這是由於Git使用SSH鏈接,而SSH鏈接在第一次驗證GitHub服務器的Key時,須要你確認GitHub的Key的指紋信息是否真的來自GitHub的服務器,輸入yes回車便可。Git會輸出一個警告,告訴你已經把GitHub的Key添加到本機的一個信任列表裏了。

三、從遠程庫克隆

  從零開發,那麼最好的方式是先建立遠程庫,而後,從遠程庫克隆。

   首先,登錄GitHub,建立一個新的倉庫,咱們勾選 Initialize this repository with a README ,這樣GitHub會自動爲咱們建立一個 README.md 文件。

  如今,遠程庫已經準備好了,下一步是用命令 git clone 克隆一個本地庫:

$ git clone git@github.com:Allen-Sq/test.git
Cloning into 'test'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (3/3), done.
Checking connectivity... done.

  若是有多我的協做開發,那麼每一個人各自從遠程克隆一份就能夠了。你也許還注意到,GitHub給出的地址不止一個,還能夠用 https://github.com/Allen-Sq/test.git 這樣的地址。實際上,Git支持多種協議,默認的 git:// 使用ssh,但也可使用 https 等其餘協議。

四、小結

  要關聯一個遠程庫,使用命令 git remote add origin git@server-name:path/repo-name.git ;

  關聯後,使用命令 git push -u origin master 第一次推送master分支的全部內容;

  此後,每次本地提交後,只要有必要,就可使用命令 git push origin master 推送最新修改;

  要克隆一個倉庫,首先必須知道倉庫的地址,而後使用 git clone 命令克隆;

  Git支持多種協議,包括 https ,但經過 ssh 支持的原生 git 協議速度最快;

  分佈式版本系統的最大好處之一是在本地工做徹底不須要考慮遠程庫的存在,也就是有沒有聯網均可以正常工做,而SVN在沒有聯網的時候是拒絕幹活的!當有網絡的時候,再把本地提交推送一下就完成了同步,真是太方便了!

相關文章
相關標籤/搜索