天天看點

Git學習筆記四--遠端倉庫

Git遠端倉庫

  Git是分布式版本控制系統,同一個Git倉庫,可以分布到不同的機器上。

  怎麼分布呢?最早,肯定隻有一台機器有一個原始版本庫,此後,别的機器可以“克隆”這個原始版本庫,而且每台機器的版本庫其實都是一樣的,并沒有主次之分。

  你肯定會想,至少需要兩台機器才能玩遠端庫不是?但是我隻有一台電腦,怎麼玩?

  注冊GitHub賬号,由于你的本地Git倉庫和GitHub倉庫之間的傳輸是通過SSH加密的,是以,需要一點設定:

  第1步:建立SSH Key。

      在使用者主目錄下(我的win7,在C:\Users\**\下),看看有沒有.ssh目錄,如果有,再看看這個目錄下有沒有<code>id_rsa</code>和<code>id_rsa.pub</code>這兩個檔案,如果已經有了,可直接跳到下一步。如果沒有,打開Shell(Windows下打開Git Bash),建立SSH Key:

  你需要把郵件位址換成你自己的郵件位址,然後一路回車,使用預設值即可,由于這個Key也不是用于軍事目的,是以也無需設定密碼。

  如果一切順利的話,可以在使用者主目錄裡找到<code>.ssh</code>目錄,裡面有<code>id_rsa</code>和<code>id_rsa.pub</code>兩個檔案,這兩個就是SSH Key的秘鑰對,<code>id_rsa</code>是私鑰,不能洩露出去,<code>id_rsa.pub</code>是公鑰,可以放心地告訴任何人。

    

Git學習筆記四--遠端倉庫

  第2步:登陸GitHub,打開“Account settings”,“SSH Keys”頁面:

Git學習筆記四--遠端倉庫

  然後,點“Add SSH Key”,填上任意Title,在Key文本框裡粘貼<code>id_rsa.pub</code>檔案的内容:

  

Git學習筆記四--遠端倉庫

  點“Add Key”,你就應該看到已經添加的Key:

Git學習筆記四--遠端倉庫

  為什麼GitHub需要SSH Key呢?因為GitHub需要識别出你推送的送出确實是你推送的,而不是别人冒充的,而Git支援SSH協定,是以,GitHub隻要知道了你的公鑰,就可以确認隻有你自己才能推送。

  當然,GitHub允許你添加多個Key。假定你有若幹電腦,你一會兒在公司送出,一會兒在家裡送出,隻要把每台電腦的Key都添加到GitHub,就可以在每台電腦上往GitHub推送了。

  最後友情提示,在GitHub上免費托管的Git倉庫,任何人都可以看到喔(但隻有你自己才能改)。是以,不要把敏感資訊放進去。

添加遠端倉庫

  如果,你已經在本地建立一個Git倉庫,又想在GitHub上常見一個Git倉庫,并且讓這兩個倉庫進行遠端同步,這樣,GitHub上的倉庫既可以作為備份,又可以讓其他人通過該倉庫來協作,真是一舉多得。

  首先,登陸GitHub,然後,在右上角找到“Create a new repo”按鈕,建立一個新的倉庫:

Git學習筆記四--遠端倉庫

  在Repository name填入<code>GitHubTest</code>,其他保持預設設定,點選“Create repository”按鈕,就成功地建立了一個新的Git倉庫GitHubTest:

  目前,在GitHub上的這個GitHubTest倉庫還是空的,GitHub告訴我們,可以從這個倉庫克隆出新的倉庫,也可以把一個已有的本地倉庫與之關聯,然後,把本地倉庫的内容推送到GitHub倉庫。

  現在,我們根據GitHub的提示,在本地的Git倉庫下運作指令:

  請千萬注意,把上面的<code>303041859</code>替換成你自己的GitHub賬戶名,否則,你在本地關聯的就是我的遠端庫,關聯沒有問題,但是你以後推送是推不上去的,因為你的SSH Key公鑰不在我的賬戶清單中。

  添加後,遠端庫的名字就是<code>origin</code>,這是Git預設的叫法,也可以改成别的,但是<code>origin</code>這個名字一看就知道是遠端庫。

  下一步,就可以把本地庫的所有内容推送到遠端庫上:

  執行結果:

  把本地庫的内容推送到遠端,用<code>git push</code>指令,實際上是把目前分支<code>master</code>推送到遠端。

  由于遠端庫是空的,我們第一次推送<code>master</code>分支時,加上了<code>-u</code>參數,Git不但會把本地的<code>master</code>分支内容推送的遠端新的<code>master</code>分支,還會把本地的<code>master</code>分支和遠端的<code>master</code>分支關聯起來,在以後的推送或者拉取時就可以簡化指令。

  推送成功後,可以立刻在GitHub頁面中看到遠端庫的内容已經和本地一模一樣:

Git學習筆記四--遠端倉庫

  從現在起,隻要本地作了送出,就可以通過指令:

  當你第一次使用Git的<code>clone</code>或者<code>push</code>指令連接配接GitHub時,會得到一個警告:

  這是因為Git使用SSH連接配接,而SSH連接配接在第一次驗證GitHub伺服器的Key時,需要你确認GitHub的Key的指紋資訊是否真的來自GitHub的伺服器,輸入<code>yes</code>回車即可。

Git會輸出一個警告,告訴你已經把GitHub的Key添加到本機的一個信任清單裡了:

  這個警告隻會出現一次,後面的操作就不會有任何警告了。

  要關聯一個遠端庫,使用指令<code>git remote add origin git@server-name:path/repo-name.git</code>;

  關聯後,使用指令<code>git push -u origin master</code>第一次推送master分支的所有内容;

  此後,每次本地送出後,隻要有必要,就可以使用指令<code>git push origin master</code>推送最新修改;

  分布式版本系統的最大好處之一是在本地工作完全不需要考慮遠端庫的存在,也就是有沒有聯網都可以正常工作,而SVN在沒有聯網的時候是拒絕幹活的!當有網絡的時候,再把本地送出推送一下就完成了同步,真是太友善了!

繼續閱讀