01.Git的簡介
- Git 是一個(gè)免費(fèi)的、開源的分布式版本控制系統(tǒng)笋额,可以快速高效地處理從小型到大型的各種項(xiàng)目元暴。
- Git 易于學(xué)習(xí),占地面積小兄猩,性能極快茉盏。 它具有廉價(jià)的本地庫鉴未,方便的暫存區(qū)域和多個(gè)工作流分支等特性。其性能優(yōu)于 Subversion鸠姨、CVS铜秆、Perforce 和 ClearCase 等版本控制工具。
一.何為 版本控制
版本控制是一種記錄文件內(nèi)容變化讶迁,以便將來查閱特定版本修訂情況的系統(tǒng)连茧。版本控制其實(shí)最重要的是可以記錄文件修改歷史記錄,從而讓用戶能夠查看歷史版本添瓷,方便版本切換梅屉。
二.為什么需要版本控制
個(gè)人開發(fā)過渡到團(tuán)隊(duì)協(xié)作值纱。
三.版本控制工具
3.1集中式版本控制工具
CVS鳞贷、SVN(Subversion)、VSS……
集中化的版本控制系統(tǒng)諸如 CVS虐唠、SVN 等搀愧,都有一個(gè)單一的集中管理的服務(wù)器,保存所有文件的修訂版本疆偿,而協(xié)同工作的人們都通過客戶端連到這臺(tái)服務(wù)器咱筛,取出最新的文件或者提交更新。多年以來杆故,這已成為版本控制系統(tǒng)的標(biāo)準(zhǔn)做法迅箩。
這種做法帶來了許多好處,每個(gè)人都可以在一定程度上看到項(xiàng)目中的其他人正在做些什么处铛。而管理員也可以輕松掌控每個(gè)開發(fā)者的權(quán)限饲趋,并且管理一個(gè)集中化的版本控制系統(tǒng),要遠(yuǎn)比在各個(gè)客戶端上維護(hù)本地?cái)?shù)據(jù)庫來得輕松容易撤蟆。事分兩面奕塑,有好有壞。這么做顯而易見的缺點(diǎn)是中央服務(wù)器的單點(diǎn)故障家肯。如果服務(wù)器宕機(jī)一小時(shí)龄砰,那么在這一小時(shí)內(nèi),誰都無法提交更新讨衣,也就無法協(xié)同工作换棚。
3.2 分布式版本控制工具
Git、Mercurial反镇、Bazaar固蚤、Darcs……
像 Git 這種分布式版本控制工具,客戶端提取的不是最新版本的文件快照愿险,而是把代碼倉庫完整地鏡像下來(本地庫)颇蜡。這樣任何一處協(xié)同工作用的文件發(fā)生故障价说,事后都可以用其他客戶端的本地倉庫進(jìn)行恢復(fù)。因?yàn)槊總€(gè)客戶端的每一次文件提取操作风秤,實(shí)際上都是一次
對(duì)整個(gè)文件倉庫的完整備份鳖目。分布式的版本控制系統(tǒng)出現(xiàn)之后,解決了集中式版本控制系統(tǒng)的缺陷:
- 服務(wù)器斷網(wǎng)的情況下也可以進(jìn)行開發(fā)(因?yàn)榘姹究刂剖窃诒镜剡M(jìn)行的)
- 每個(gè)客戶端保存的也都是整個(gè)完整的項(xiàng)目(包含歷史記錄,更加安全)
四.Git 簡史
很多人都知道缤弦,Linus在1991年創(chuàng)建了開源的Linux领迈,從此,Linux系統(tǒng)不斷發(fā)展碍沐,已經(jīng)成為最大的服務(wù)器系統(tǒng)軟件了狸捅。
Linus雖然創(chuàng)建了Linux,但Linux的壯大是靠全世界熱心的志愿者參與的累提,這么多人在世界各地為Linux編寫代碼尘喝,那Linux的代碼是如何管理的呢?
事實(shí)是斋陪,在2002年以前朽褪,世界各地的志愿者把源代碼文件通過diff的方式發(fā)給Linus,然后由Linus本人通過手工方式合并代碼无虚!
你也許會(huì)想缔赠,為什么Linus不把Linux代碼放到版本控制系統(tǒng)里呢故黑?不是有CVS果善、SVN這些免費(fèi)的版本控制系統(tǒng)嗎?因?yàn)長inus堅(jiān)定地反對(duì)CVS和SVN宠蚂,這些集中式的版本控制系統(tǒng)不但速度慢度宦,而且必須聯(lián)網(wǎng)才能使用踢匣。有一些商用的版本控制系統(tǒng),雖然比CVS斗埂、SVN好用符糊,但那是付費(fèi)的,和Linux的開源精神不符呛凶。
不過男娄,到了2002年,Linux系統(tǒng)已經(jīng)發(fā)展了十年了漾稀,代碼庫之大讓Linus很難繼續(xù)通過手工方式管理了模闲,社區(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í)氣橄浓。開發(fā)Samba的Andrew試圖破解BitKeeper的協(xié)議(這么干的其實(shí)也不只他一個(gè)),被BitMover公司發(fā)現(xiàn)了(監(jiān)控工作做得不錯(cuò)A梁健)荸实,于是BitMover公司怒了,要收回Linux社區(qū)的免費(fèi)使用權(quán)缴淋。
Linus可以向BitMover公司道個(gè)歉准给,保證以后嚴(yán)格管教弟兄們,嗯重抖,這是不可能的露氮。實(shí)際情況是這樣的:
Linus花了兩周時(shí)間自己用C寫了一個(gè)分布式版本控制系統(tǒng),這就是Git钟沛!一個(gè)月之內(nèi)畔规,Linux系統(tǒng)的源碼已經(jīng)由Git管理了!牛是怎么定義的呢讹剔?大家可以體會(huì)一下油讯。
Git迅速成為最流行的分布式版本控制系統(tǒng),尤其是2008年延欠,GitHub網(wǎng)站上線了,它為開源項(xiàng)目免費(fèi)提供Git存儲(chǔ)沈跨,無數(shù)開源項(xiàng)目開始遷移至GitHub由捎,包括jQuery,PHP饿凛,Ruby等等狞玛。
歷史就是這么偶然,如果不是當(dāng)年BitMover公司威脅Linux社區(qū)涧窒,可能現(xiàn)在我們就沒有免費(fèi)而超級(jí)好用的Git了心肪。
五.Git 工作機(jī)制
六.Git 和代碼托管中心
代碼托管中心是基于網(wǎng)絡(luò)服務(wù)器的遠(yuǎn)程代碼倉庫,一般我們簡單稱為遠(yuǎn)程庫纠吴。
6.1局域網(wǎng)
? GitLab
6.2 互聯(lián)網(wǎng)
? GitHub(外網(wǎng))
? Gitee 碼云(國內(nèi)網(wǎng)站)