1. 程式人生 > >程式猿的必備神器:Git遠端倉庫的使用手法詳解

程式猿的必備神器:Git遠端倉庫的使用手法詳解

作為一個程式猿,如果說你對這個GitHub不瞭解,那麼就很尷尬了!

學會使用這個東東是很有必要的!

至於為什麼往下看就是了。

如果看完,你有了想法,就去試著去GitHub註冊個賬號,然後安裝一下,再試著操作一遍!

注:以下命令是在Linux環境下的命令,記得哦,不過也是可以在windows安裝好的Git Bash中使用,挺方便的!

Git的誕生

圖片描述(最多50字)

同生活中的許多偉大事件一樣,Git 誕生於一個極富紛爭大舉創新的年代。1991年,Linus建立了開源的Linux,並且有著為數眾多的參與者。雖然有世界各地的志願者為Linux編寫程式碼,但是絕大多數的 Linux 核心維護工作都花在了提交補丁和儲存歸檔的繁瑣事務上(1991-2002年間)。在這期間,所有的原始碼都是由Linus手工合併。因為Linus堅定地反對CVS和SVN,這些集中式的版本控制系統(集中式和分散式我們會在接下來的內容講解)不但速度慢,而且必須聯網才能使用。雖然有一些商用的版本控制系統,比CVS、SVN好用,但那是付費的,和Linux的開源精神不符。

不過,到了2002 年,Linux系統已經發展了十年了,程式碼庫之大讓Linus很難繼續通過手工方式管理了,社群的弟兄們也對這種方式表達了強烈不滿,於是整個專案組啟用了一個商業版本的分散式版本控制系統 BitKeeper 來管理和維護程式碼。BitKeeper的東家BitMover公司出於人道主義精神,授權Linux社群免費使用這個版本控制系統。安定團結的大好局面在2005年被打破,開發BitKeeper 的商業公司同 Linux 核心開源社群的合作關係結束,原因是Linux社群牛人聚集,開發Samba的Andrew試圖破解BitKeeper的協議,這麼幹的其實也不只他一個,但是被BitMover公司發現了,於是BitMover公司收回了Linux社群的免費使用權。這就迫使Linux開源社群( 特別是Linux的締造者 Linus Torvalds )不得不吸取教訓,只有開發一套屬於自己的版本控制系統才不至於重蹈覆轍。

他們對新的系統制訂了若干目標:速度 、 簡單的設計 、 對非線性開發模式的強力支援(允許上千個並行開發的分支)、完全分散式、有能力高效管理類似 Linux 核心一樣的超大規模專案(速度和資料量)。自誕生於 2005 年以來,Git 日臻成熟完善,迅速成為最流行的分散式版本控制系統,在高度易用的同時,仍然保留著初期設定的目標。它的速度飛快,極其適合管理大專案,它還有著令人難以置信的非線性分支管理系統,可以應付各種複雜的專案開發需求。2008年,GitHub網站上線了,它為開源專案免費提供Git儲存,無數開源專案開始遷移至GitHub,包括jQuery,PHP,Ruby等等。

歷史就是這麼偶然,如果不是當年BitMover公司威脅Linux社群,可能現在我們就沒有免費而超級好用的Git了。

Linus一直痛恨的CVS及SVN都是集中式的版本控制系統,而Git是分散式版本控制系統,集中式和分散式版本控制系統有什麼區別呢?

先說集中式版本控制系統,版本庫是集中存放在中央伺服器的,而大家工作的時候,用的都是自己的電腦,所以要先從中央伺服器取得最新的版本,然後開始工作,工作完成,再把自己的修訂推送給中央伺服器。這類系統,都有一個單一的集中管理的伺服器,儲存所有檔案的修訂版本,而協同工作的人們都通過客戶端連到這臺伺服器,取出最新的檔案或者提交更新。

圖片描述(最多50字)

那分散式版本控制系統與集中式版本控制系統有何不同呢?首先,分散式版本控制系統根本沒有“中央伺服器”,每個人的電腦上都是一個完整的版本庫,這樣,你工作的時候,就不需要聯網了,因為版本庫就在你自己的電腦上。既然每個人電腦上都有一個完整的版本庫,那多個人如何協作呢?比方說你在自己電腦上改了檔案A,你的同事也在他的電腦上改了檔案A,這時,你們倆之間只需把各自的修改推送給對方,就可以互相看到對方的修改了。

和集中式版本控制系統相比,分散式版本控制系統的安全性要高很多,因為每個人電腦裡都有完整的版本庫,某一個人的電腦壞掉了不要緊,隨便從其他人那裡複製一個就可以了。而集中式版本控制系統的中央伺服器要是出了問題,所有人都沒法幹活了。

在實際使用分散式版本控制系統的時候,其實很少在兩人之間的電腦上推送版本庫的修改,因為可能你們倆不在一個區域網內,兩臺電腦互相訪問不了,也可能今天你的同事病了,他的電腦壓根沒有開機。因此,分散式版本控制系統通常也有一臺充當“中央伺服器”的電腦,但這個伺服器的作用僅僅是用來方便“交換”大家的修改,沒有它大家也一樣幹活,只是交換修改不方便而已。

圖片描述(最多50字)

許多這類系統都可以指定和若干不同的遠端程式碼倉庫進行互動。籍此,你就可以在同一個專案中,分別和不同工作小組的人相互協作。你可以根據需要設定不同的協作流程,比如層次模型式的工作流,而這在以前的集中式系統中是無法實現的。

Git的配置
使用Git的第一件事就是設定你的名字和email,這些就是你在提交commit時的簽名,每次提交記錄裡都會包含這些資訊。使用git config命令進行配置:

$ git config --global user.name “Scott Chacon”
$ git config --global user.email "[email protected]"
執行了上面的命令後,會在家目錄(/home/shiyanlou)下建立一個叫.gitconfig 的檔案(該檔案為隱藏檔案,需要使用ls -al檢視到). 內容一般像下面這樣,可以使用vim或cat檢視檔案內容:

$ cat ~/.gitconfig
[user]
email = [email protected]
name = Scott Chacon
上面的配置檔案就是Git全域性配置的檔案,一般配置方法是git config --global <配置名稱> <配置的值>。

如果你想使專案裡的某個值與前面的全域性設定有區別(例如把私人郵箱地址改為工作郵箱),你可以在專案中使用git config 命令不帶 --global 選項來設定. 這會在你當前的專案目錄下建立 .git/config,從而使用針對當前專案的配置。

獲得一個Git倉庫
既然我們現在把一切都設定好了,那麼我們需要一個Git倉庫。有兩種方法可以得到它:一種是從已有的Git倉庫中clone (克隆,複製);還有一種是新建一個倉庫,把未進行版本控制的檔案進行版本控制

Clone一個倉庫
為了得到一個專案的拷貝(copy),我們需要知道這個專案倉庫的地址(Git URL). Git能在許多協議下使用,所以Git URL可能以ssh://, http(s)