1、git代碼託管html
一、github官網,默認通常是放在這,可是該網站不是國內的,網速比較慢而且有時候連不上,私有庫是須要收費的。git
二、oschina,這個網站是私有公有庫都是免費的,網址是:https://gitee.com。github
三、本身搭一個git服務器,通常只能在局域網中使用,和svn相似。ruby
2、oschina託管操做(碼雲)服務器
和GitHub相比,碼雲也提供免費的Git倉庫,而且,免費版本還包含私有庫。此外,還集成了代碼質量檢測、項目演示等功能。對於團隊協做開發,碼雲還提供了項目管理、代碼託管、文檔管理的服務,5人如下小團隊免費。ssh
生成祕鑰:ssh-keygen分佈式
找到生成祕鑰的文件,複製裏面的內容。svn
使用碼雲和使用GitHub相似,咱們在碼雲上註冊帳號並登陸後,須要先上傳本身的SSH公鑰。選擇右上角用戶頭像 -> 菜單「修改資料」,而後選擇「SSH公鑰」,填寫一個便於識別的標題,而後把用戶主目錄下的.ssh/id_rsa.pub
文件的內容粘貼進去:學習
點擊「肯定」便可完成並看到剛纔添加的Key:測試
若是咱們已經有了一個本地的git倉庫(例如,一個名爲learngit的本地庫),如何把它關聯到碼雲的遠程庫上呢?
首先,咱們在碼雲上建立一個新的項目,選擇右上角用戶頭像 -> 菜單「控制面板」,而後點擊「建立項目」:
項目名稱最好與本地庫保持一致:
遠程庫的地址:
而後,咱們在本地庫上使用命令git remote add
把它和碼雲的遠程庫關聯:
git remote add origin git@gitee.com:liaoxuefeng/learngit.git
以後,就能夠正常地用git push
和git pull
推送了!
若是在使用命令git remote add
時報錯:
git remote add origin git@gitee.com:liaoxuefeng/learngit.git fatal: remote origin already exists.
測試是否鏈接成功: ssh -T git@git.oschina.net
出現相似於上面的提示表示鏈接成功。
這說明本地庫已經關聯了一個名叫origin
的遠程庫,此時,能夠先用git remote -v
查看遠程庫信息:
git remote -v
origin git@github.com:michaelliao/learngit.git (fetch) origin git@github.com:michaelliao/learngit.git (push)
能夠看到,本地庫已經關聯了origin
的遠程庫,而且,該遠程庫指向GitHub。
咱們能夠刪除已有的GitHub遠程庫:
git remote rm origin
再關聯碼雲的遠程庫(注意路徑中須要填寫正確的用戶名):
git remote add origin git@gitee.com:liaoxuefeng/learngit.git
此時,咱們再查看遠程庫信息:
git remote -v
origin git@gitee.com:liaoxuefeng/learngit.git (fetch) origin git@gitee.com:liaoxuefeng/learngit.git (push)
如今能夠看到,origin已經被關聯到碼雲的遠程庫了。經過git push
命令就能夠把本地庫推送到Gitee上。
可能push會出現以上的問題。
經過如下命令能夠解決,具體參考:https://jingyan.baidu.com/article/f3e34a12a25bc8f5ea65354a.html
git pull --rebase origin master
有的小夥伴又要問了,一個本地庫能不能既關聯GitHub,又關聯碼雲呢?
答案是確定的,由於git自己是分佈式版本控制系統,能夠同步到另一個遠程庫,固然也能夠同步到另外兩個遠程庫。
使用多個遠程庫時,咱們要注意,git給遠程庫起的默認名稱是origin
,若是有多個遠程庫,咱們須要用不一樣的名稱來標識不一樣的遠程庫。
仍然以learngit
本地庫爲例,咱們先刪除已關聯的名爲origin
的遠程庫:
git remote rm origin
而後,先關聯GitHub的遠程庫:
git remote add github git@github.com:michaelliao/learngit.git
注意,遠程庫的名稱叫github
,不叫origin
了。
接着,再關聯碼雲的遠程庫:
git remote add gitee git@gitee.com:liaoxuefeng/learngit.git
一樣注意,遠程庫的名稱叫gitee
,不叫origin
。
如今,咱們用git remote -v
查看遠程庫信息,能夠看到兩個遠程庫:
git remote -v
gitee git@gitee.com:liaoxuefeng/learngit.git (fetch) gitee git@gitee.com:liaoxuefeng/learngit.git (push) github git@github.com:michaelliao/learngit.git (fetch) github git@github.com:michaelliao/learngit.git (push)
若是要推送到GitHub,使用命令:
git push github master
若是要推送到碼雲,使用命令:
git push gitee master
這樣一來,咱們的本地庫就能夠同時與多個遠程庫互相同步:
碼雲也一樣提供了Pull request功能,可讓其餘小夥伴參與到開源項目中來。你能夠經過Fork個人倉庫:https://gitee.com/liaoxuefeng/learngit,建立一個your-gitee-id.txt
的文本文件, 寫點本身學習Git的心得,而後推送一個pull request給我,這個倉庫會在碼雲和GitHub作雙向同步。
問題: