01.Git的簡(jiǎn)介
- Git 是一個(gè)免費(fèi)的、開(kāi)源的分布式版本控制系統(tǒng),可以快速高效地處理從小型到大型的各種項(xiàng)目。
- Git 易于學(xué)習(xí),占地面積小,性能極快。 它具有廉價(jià)的本地庫(kù),方便的暫存區(qū)域和多個(gè)工作流分支等特性。其性能優(yōu)于 Subversion、CVS、Perforce 和 ClearCase 等版本控制工具。
一.何為 版本控制
版本控制是一種記錄文件內(nèi)容變化,以便將來(lái)查閱特定版本修訂情況的系統(tǒng)。版本控制其實(shí)最重要的是可以記錄文件修改歷史記錄,從而讓用戶能夠查看歷史版本,方便版本切換。

二.為什么需要版本控制
個(gè)人開(kāi)發(fā)過(guò)渡到團(tuán)隊(duì)協(xié)作。

三.版本控制工具
3.1集中式版本控制工具
CVS、SVN(Subversion)、VSS……
集中化的版本控制系統(tǒng)諸如 CVS、SVN 等,都有一個(gè)單一的集中管理的服務(wù)器,保存所有文件的修訂版本,而協(xié)同工作的人們都通過(guò)客戶端連到這臺(tái)服務(wù)器,取出最新的文件或者提交更新。多年以來(lái),這已成為版本控制系統(tǒng)的標(biāo)準(zhǔn)做法。
這種做法帶來(lái)了許多好處,每個(gè)人都可以在一定程度上看到項(xiàng)目中的其他人正在做些什么。而管理員也可以輕松掌控每個(gè)開(kāi)發(fā)者的權(quán)限,并且管理一個(gè)集中化的版本控制系統(tǒng),要遠(yuǎn)比在各個(gè)客戶端上維護(hù)本地?cái)?shù)據(jù)庫(kù)來(lái)得輕松容易。事分兩面,有好有壞。這么做顯而易見(jiàn)的缺點(diǎn)是中央服務(wù)器的單點(diǎn)故障。如果服務(wù)器宕機(jī)一小時(shí),那么在這一小時(shí)內(nèi),誰(shuí)都無(wú)法提交更新,也就無(wú)法協(xié)同工作。

3.2 分布式版本控制工具
Git、Mercurial、Bazaar、Darcs……
像 Git 這種分布式版本控制工具,客戶端提取的不是最新版本的文件快照,而是把代碼倉(cāng)庫(kù)完整地鏡像下來(lái)(本地庫(kù))。這樣任何一處協(xié)同工作用的文件發(fā)生故障,事后都可以用其他客戶端的本地倉(cāng)庫(kù)進(jìn)行恢復(fù)。因?yàn)槊總€(gè)客戶端的每一次文件提取操作,實(shí)際上都是一次
對(duì)整個(gè)文件倉(cāng)庫(kù)的完整備份。分布式的版本控制系統(tǒng)出現(xiàn)之后,解決了集中式版本控制系統(tǒng)的缺陷:
- 服務(wù)器斷網(wǎng)的情況下也可以進(jìn)行開(kāi)發(fā)(因?yàn)榘姹究刂剖窃诒镜剡M(jìn)行的)
- 每個(gè)客戶端保存的也都是整個(gè)完整的項(xiàng)目(包含歷史記錄,更加安全)

四.Git 簡(jiǎn)史

很多人都知道,Linus在1991年創(chuàng)建了開(kāi)源的Linux,從此,Linux系統(tǒng)不斷發(fā)展,已經(jīng)成為最大的服務(wù)器系統(tǒng)軟件了。
Linus雖然創(chuàng)建了Linux,但Linux的壯大是靠全世界熱心的志愿者參與的,這么多人在世界各地為L(zhǎng)inux編寫(xiě)代碼,那Linux的代碼是如何管理的呢?
事實(shí)是,在2002年以前,世界各地的志愿者把源代碼文件通過(guò)diff的方式發(fā)給Linus,然后由Linus本人通過(guò)手工方式合并代碼!
你也許會(huì)想,為什么Linus不把Linux代碼放到版本控制系統(tǒng)里呢?不是有CVS、SVN這些免費(fèi)的版本控制系統(tǒng)嗎?因?yàn)長(zhǎng)inus堅(jiān)定地反對(duì)CVS和SVN,這些集中式的版本控制系統(tǒng)不但速度慢,而且必須聯(lián)網(wǎng)才能使用。有一些商用的版本控制系統(tǒng),雖然比CVS、SVN好用,但那是付費(fèi)的,和Linux的開(kāi)源精神不符。
不過(guò),到了2002年,Linux系統(tǒng)已經(jīng)發(fā)展了十年了,代碼庫(kù)之大讓Linus很難繼續(xù)通過(guò)手工方式管理了,社區(qū)的弟兄們也對(duì)這種方式表達(dá)了強(qiáng)烈不滿,于是Linus選擇了一個(gè)商業(yè)的版本控制系統(tǒng)BitKeeper,BitKeeper的東家BitMover公司出于人道主義精神,授權(quán)Linux社區(qū)免費(fèi)使用這個(gè)版本控制系統(tǒng)。
安定團(tuán)結(jié)的大好局面在2005年就被打破了,原因是Linux社區(qū)牛人聚集,不免沾染了一些梁山好漢的江湖習(xí)氣。開(kāi)發(fā)Samba的Andrew試圖破解BitKeeper的協(xié)議(這么干的其實(shí)也不只他一個(gè)),被BitMover公司發(fā)現(xiàn)了(監(jiān)控工作做得不錯(cuò)?。谑荁itMover公司怒了,要收回Linux社區(qū)的免費(fèi)使用權(quán)。
Linus可以向BitMover公司道個(gè)歉,保證以后嚴(yán)格管教弟兄們,嗯,這是不可能的。實(shí)際情況是這樣的:
Linus花了兩周時(shí)間自己用C寫(xiě)了一個(gè)分布式版本控制系統(tǒng),這就是Git!一個(gè)月之內(nèi),Linux系統(tǒng)的源碼已經(jīng)由Git管理了!牛是怎么定義的呢?大家可以體會(huì)一下。
Git迅速成為最流行的分布式版本控制系統(tǒng),尤其是2008年,GitHub網(wǎng)站上線了,它為開(kāi)源項(xiàng)目免費(fèi)提供Git存儲(chǔ),無(wú)數(shù)開(kāi)源項(xiàng)目開(kāi)始遷移至GitHub,包括jQuery,PHP,Ruby等等。
歷史就是這么偶然,如果不是當(dāng)年BitMover公司威脅Linux社區(qū),可能現(xiàn)在我們就沒(méi)有免費(fèi)而超級(jí)好用的Git了。
五.Git 工作機(jī)制

六.Git 和代碼托管中心
代碼托管中心是基于網(wǎng)絡(luò)服務(wù)器的遠(yuǎn)程代碼倉(cāng)庫(kù),一般我們簡(jiǎn)單稱為遠(yuǎn)程庫(kù)。
6.1局域網(wǎng)
? GitLab
6.2 互聯(lián)網(wǎng)
? GitHub(外網(wǎng))
? Gitee 碼云(國(guó)內(nèi)網(wǎng)站)