如今的情景是,你已經在本地建立了一個Git倉庫後,又想在GitHub建立一個Git倉庫,而且讓這兩個倉庫進行遠程同步,這樣,GitHub上的倉庫既能夠做爲備份,又可讓其餘人經過該倉庫來協做,真是一舉多得。git
首先,登錄GitHub,而後,在右上角找到「Create a new repo」按鈕,建立一個新的倉庫:github
在Repository name填入learngit
,其餘保持默認設置,點擊「Create repository」按鈕,就成功地建立了一個新的Git倉庫:web
目前,在GitHub上的這個learngit
倉庫仍是空的,GitHub告訴咱們,能夠從這個倉庫克隆出新的倉庫,也能夠把一個已有的本地倉庫與之關聯,而後,把本地倉庫的內容推送到GitHub倉庫。服務器
如今,咱們根據GitHub的提示,在本地的learngit
倉庫下運行命令:網絡
$ git remote add origin git@github.com:yedushusheng/learngit.git
請千萬注意,把上面的yedushusheng
替換成你本身的GitHub帳戶名,不然,你在本地關聯的就是個人遠程庫,關聯沒有問題,可是你之後推送是推不上去的,由於你的SSH Key公鑰不在個人帳戶列表中。ssh
添加後,遠程庫的名字就是origin
,這是Git默認的叫法,也能夠改爲別的,可是origin
這個名字一看就知道是遠程庫。分佈式
下一步,就能夠把本地庫的全部內容推送到遠程庫上:spa
$ 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:michaelliao/learngit.git * [new branch] master -> master Branch master set up to track remote branch master from origin.
把本地庫的內容推送到遠程,用git push
命令,其實是把當前分支master
推送到遠程。code
因爲遠程庫是空的,咱們第一次推送master
分支時,加上了-u
參數,Git不但會把本地的master
分支內容推送的遠程新的master
分支,還會把本地的master
分支和遠程的master
分支關聯起來,在之後的推送或者拉取時就能夠簡化命令。server
推送成功後,能夠馬上在GitHub頁面中看到遠程庫的內容已經和本地如出一轍:
從如今起,只要本地做了提交,就能夠經過命令:
$ git push origin master
把本地master
分支的最新修改推送至GitHub,如今,你就擁有了真正的分佈式版本庫!
當你第一次使用Git的clone
或者push
命令鏈接GitHub時,會獲得一個警告:
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)?
這是由於Git使用SSH鏈接,而SSH鏈接在第一次驗證GitHub服務器的Key時,須要你確認GitHub的Key的指紋信息是否真的來自GitHub的服務器,輸入yes
回車便可。
Git會輸出一個警告,告訴你已經把GitHub的Key添加到本機的一個信任列表裏了:
Warning: Permanently added 'github.com' (RSA) to the list of known hosts.
這個警告只會出現一次,後面的操做就不會有任何警告了。
若是你實在擔憂有人冒充GitHub服務器,輸入yes
前能夠對照GitHub的RSA Key的指紋信息是否與SSH鏈接給出的一致。
要關聯一個遠程庫,使用命令git remote add origin git@server-name:path/repo-name.git
;
關聯後,使用命令git push -u origin master
第一次推送master分支的全部內容;
此後,每次本地提交後,只要有必要,就可使用命令git push origin master
推送最新修改;
分佈式版本系統的最大好處之一是在本地工做徹底不須要考慮遠程庫的存在,也就是有沒有聯網均可以正常工做,而SVN在沒有聯網的時候是拒絕幹活的!當有網絡的時候,再把本地提交推送一下就完成了同步,真是太方便了!