Git的使用教程(六)遠(yuǎn)程倉(cāng)庫(kù)
之前的操作我們只是把Git當(dāng)做了一個(gè)倉(cāng)庫(kù),做本地的一個(gè)版本管理,這對(duì)Git來說簡(jiǎn)直大材小用。Git作為分布式版本控制系統(tǒng),分布才是其特色,如何分布呢?肯定要有一臺(tái)機(jī)器充當(dāng)原始的版本庫(kù),其他的機(jī)器“克隆”這個(gè)原始版本庫(kù),其實(shí)每臺(tái)機(jī)器上的版本都一樣,沒有主次之分,之所以有原始版本庫(kù),是為了方便多人協(xié)作時(shí)候有一個(gè)基準(zhǔn),讓各機(jī)器上的版本保持一致。一般情況下,原始的版本庫(kù)不會(huì)跟我們工作的電腦在一起,它對(duì)于我們來說是遠(yuǎn)程的,所以我們可以稱之為遠(yuǎn)程倉(cāng)庫(kù)。
? ? 既然是遠(yuǎn)程,肯定還需要一臺(tái)機(jī)器充當(dāng)服務(wù)器(原始版本庫(kù)),而且這臺(tái)機(jī)器需要保證24小時(shí)開機(jī),這樣才能保證其他用戶可以隨時(shí)克隆原始版本,推送提交到該服務(wù)器,拉取別人的提交。我們目前只是為了學(xué)習(xí)Git,特意找個(gè)服務(wù)器劃不來,好在大Git地位超然,很多網(wǎng)站紛紛提供Git倉(cāng)庫(kù)托管服務(wù),像是國(guó)內(nèi)外都著名的github.com,國(guó)內(nèi)著名的git.oschina.net。雖然兩者都能夠提供托管服務(wù),但是github免費(fèi)建立的只有公倉(cāng)(對(duì)所有用戶都可見),私倉(cāng)(僅對(duì)自己可見)是要付費(fèi)的,而oschina的公私倉(cāng)都不需要付費(fèi),而且是國(guó)貨,理應(yīng)支持,因此小編就選擇了oschina建立遠(yuǎn)程倉(cāng)庫(kù)。
? ? 關(guān)于在oschina申請(qǐng)賬號(hào)這里就不再?gòu)?fù)述了,假定你已經(jīng)擁有了賬號(hào)并登錄,那么我們就可以建立一個(gè)遠(yuǎn)程倉(cāng)庫(kù)了。在oschina上創(chuàng)建一個(gè)遠(yuǎn)程倉(cāng)庫(kù)很簡(jiǎn)單,我們點(diǎn)擊新建項(xiàng)目,我們必須要填寫的只有項(xiàng)目名,其他的可以根據(jù)你的需要進(jìn)行選擇,有一點(diǎn)需要提示的是,如果你已經(jīng)有g(shù)it項(xiàng)目想要直接推送到遠(yuǎn)程倉(cāng)庫(kù),不要讓遠(yuǎn)程倉(cāng)庫(kù)初始化,也就是不要勾選“使用Readme文件初始化這個(gè)項(xiàng)目”,如果你不想讓別人看見你這個(gè)項(xiàng)目,勾選“私有項(xiàng)目”。
? ??
? ? 我們成功了建立了一個(gè)空的遠(yuǎn)程倉(cāng)庫(kù),里面什么都沒有,于是乎給了我們友情提示,告訴我們應(yīng)該怎么做。
? ? 雖然他們真的很用心,但是并沒有面面俱到,沒關(guān)系,就由小編來補(bǔ)充他們的一些不足吧。不同的兩臺(tái)電腦之間需要進(jìn)行數(shù)據(jù)傳輸,肯定需要橋梁,oschina為我們提供了兩種選擇,一種是HTTPS,一種是SSH。如果使用HTTPS,倒是不用做什么特別的事情,上述教程足以讓你把本地項(xiàng)目成功推送到遠(yuǎn)程倉(cāng)庫(kù),但是每次推送都需要輸入賬號(hào)和密碼(oschina的賬號(hào)密碼),十分麻煩,因此我們可以選擇另一種方式,SSH。
? ? 使用SSH就需要?jiǎng)?chuàng)建SSH Keys,很多人不知道如何創(chuàng)建,沒關(guān)系,oschina想到了這點(diǎn),特意給除了教程。
? ??
? ??Linux的跟著教程走就行,下面我們來看下windows的。我們使用Git Bash終端,然后同樣輸入
[plain]?view plain?copyssh-keygen?-t?rsa?-C?"zhangsan@gmial.com"??
然后一路回車即可。在"C:Documents and SettingsAdministrator.ssh"中就有我們需要的文件id_rsa.pub。???然后打開oschina添加SSH公鑰的地方,點(diǎn)擊這里,前提是你已經(jīng)登陸了。然后輸入個(gè)標(biāo)題,把剛才生成的id_rsa.pub中的內(nèi)容拷貝一份到公鑰處,然后點(diǎn)擊確定即可,這樣準(zhǔn)備工作就已經(jīng)完成了。
? ? 接著我們就可以通過SSH溝通本地倉(cāng)和遠(yuǎn)程倉(cāng)了。? ??? ??添加遠(yuǎn)程倉(cāng)庫(kù)[plain]?view plain?copygit?remote?add?osc-git?git@git.oschina.net:XXXXXXX/git.git??其中g(shù)it remote是告訴Git要執(zhí)行遠(yuǎn)程倉(cāng)庫(kù)相關(guān)命令,add是添加,osc-git是遠(yuǎn)程倉(cāng)庫(kù)名(很多教程使用origin作為遠(yuǎn)程倉(cāng)庫(kù)名,非必須,可以根據(jù)情況進(jìn)行修改),為簡(jiǎn)化書寫遠(yuǎn)程倉(cāng)庫(kù)地址而存在,以后進(jìn)行遠(yuǎn)程相關(guān)操作的時(shí)候只需要使用遠(yuǎn)程倉(cāng)庫(kù)名即可,git@……則是我們遠(yuǎn)程倉(cāng)庫(kù)實(shí)際的SSH地址,就這樣,我們便成功的添加了一個(gè)遠(yuǎn)程倉(cāng)庫(kù)。
? ??查看遠(yuǎn)程倉(cāng)庫(kù)[plain]?view plain?copygit?remote?????//只輸出遠(yuǎn)程倉(cāng)庫(kù)名稱??git?remote?-v??//輸出遠(yuǎn)程倉(cāng)庫(kù)名和地址??
? ??刪除遠(yuǎn)程倉(cāng)庫(kù)[plain]?view plain?copygit?remote?rm?osc-git??
? ??推送到遠(yuǎn)程倉(cāng)庫(kù)? ? git push命令用于將本地分支的更新推送到遠(yuǎn)程分支。[plain]?view plain?copygit?push?