Git是一個(gè)分布式版本控制系統(tǒng),同一個(gè)倉(cāng)庫(kù)可以部分布到不同的機(jī)器上,并沒(méi)有主次之分。
一臺(tái)電腦也可以克隆多個(gè)Git倉(cāng)庫(kù),但不建議這么玩,沒(méi)意義。
部署創(chuàng)建遠(yuǎn)程倉(cāng)庫(kù)時(shí)可以自己搭建一臺(tái)Git服務(wù)器,但如果以學(xué)習(xí)為目的的話(huà)這樣做很麻煩,我們可以用GIthub作為我們的遠(yuǎn)程倉(cāng)庫(kù),Github提供Git倉(cāng)庫(kù)托管服務(wù),只要注冊(cè)一個(gè)免費(fèi)賬戶(hù),就可以免費(fèi)獲得git倉(cāng)庫(kù)。
1.創(chuàng)建新倉(cāng)庫(kù) New repository:

按照步驟填寫(xiě)即可,2.倉(cāng)庫(kù)名稱(chēng) 3.描述 4.公開(kāi) 5.項(xiàng)目說(shuō)明文件
2.創(chuàng)建SSH Key
項(xiàng)目倉(cāng)庫(kù)的修改和提交需要使用SSH協(xié)議來(lái)進(jìn)行,使用http是只讀的,Github就是用公鑰-私鑰驗(yàn)證機(jī)制。
在用戶(hù)主目錄下,看看有沒(méi)有.ssh目錄,再看看這個(gè)目錄下有沒(méi)有id_rsa和id_rsa.pub這兩個(gè)文件,如果已經(jīng)有了,可直接跳到下一步,如果沒(méi)有打開(kāi)Git Bash。
配置全局的name和email,這里是你的github或bitbucket的name和email。
$ git config --global user.name "xxx"
$ git config --global user.email "xxx"
$ ssh-keygen -t rsa -C "xxx" ?? 生成key,里面是github賬戶(hù)的郵箱,然后一路回車(chē),使用默認(rèn)值即可。會(huì)在用戶(hù)主目錄下生成.ssh文件夾,里面包含id_rsa和id_rsa.pub兩個(gè)文件,這倆就是SSH的密鑰,id_rsa是私鑰,id_rsa.pub是公鑰。
把公鑰添加到github賬戶(hù)上

添加公鑰是因?yàn)镚ithub需要識(shí)別出你推送的提交確實(shí)是你送的,而不是別人冒充的,Git支持SSH協(xié)議,所以Github只要知道了你的公鑰,就可以確認(rèn)只有你自己才能推送。
Github可以添加多個(gè)key,假定你有若干電腦,只要把每臺(tái)電腦的key都添加到Github,就可以在每臺(tái)電腦上往Github推送了。
$ ssh -T git@github.com ? ?查看是否與github連接成功。
Github上我們有倉(cāng)庫(kù)了,我們可以把本地倉(cāng)庫(kù)跟Github倉(cāng)庫(kù)關(guān)聯(lián)上,把本地倉(cāng)庫(kù)內(nèi)容推送到Github倉(cāng)庫(kù)上去。
3.關(guān)聯(lián)Github倉(cāng)庫(kù):
$ git remote add origin git@github.com:xxx(github用戶(hù)名)/xxx.git(github倉(cāng)庫(kù)名),這句命令必須在本地倉(cāng)庫(kù)的目錄下執(zhí)行,遠(yuǎn)程庫(kù)的名字就是origin,這是Git默認(rèn)的叫法,可以改成別的。
這樣本地倉(cāng)庫(kù)跟遠(yuǎn)程倉(cāng)庫(kù)就關(guān)聯(lián)上了,下一步就是把本地倉(cāng)庫(kù)內(nèi)容推送到遠(yuǎn)程倉(cāng)庫(kù)。
如果提示出錯(cuò)信息:fatal: remote origin already exists.
解決辦法如下:
1、先輸入$ git remote rm origin
2、再輸入$ git remote add origin?git@github.com:xxx/xxx.git就不會(huì)報(bào)錯(cuò)了!
4.推送內(nèi)容:
$ git push -u origin master ? ?把所有的內(nèi)容推送到遠(yuǎn)程庫(kù)
可能會(huì)出現(xiàn) error: failed to push some refs to 'git@github.com:skymarginal/A.git' 這種錯(cuò)誤,是因?yàn)間ithub中的README.md文件不在本地代碼目錄中,需要通過(guò)以下命令進(jìn)行代碼合并 $ git pull --rebase origin master,這樣你的本地倉(cāng)庫(kù)就多了README.md文件,再執(zhí)行推送命令就可以了。
由于新建的遠(yuǎn)程庫(kù)是空的,所以第一次推送master分支時(shí),加上了-u參數(shù),Gitb不但會(huì)把本地的master分支內(nèi)容推送到遠(yuǎn)程的master分支,還會(huì)把本地master分支和遠(yuǎn)程master分支關(guān)聯(lián)起來(lái),在以后的推送或者拉取時(shí)就可以簡(jiǎn)化命令 : $ git push origin master?
第一次連接時(shí)可能會(huì)出現(xiàn)警告,這是因?yàn)镚it使用SSH連接,而SSH連接在第一次驗(yàn)證Github服務(wù)器的ke'y時(shí),需要你確認(rèn)Github的key的指紋信息是否來(lái)自GIthub服務(wù)器,輸入yes回車(chē)即可。