Git 是目前世界上最先進(jìn)的分布式版本控制系統(tǒng)(沒(méi)有之一)。
Git 有什么特點(diǎn)?簡(jiǎn)單來(lái)說(shuō)就是:高端大氣上檔次!
那什么是版本控制系統(tǒng)?
如果你用 Microsoft Word 寫(xiě)過(guò)長(zhǎng)篇大論,那你一定有這樣的經(jīng)歷:
想刪除一個(gè)段落,又怕將來(lái)想恢復(fù)找不回來(lái)怎么辦?有辦法,先把當(dāng)前文件“另存為……”一個(gè)新的Word文件,再接著改,改到一定程度,再“另存為……”一個(gè)新文件,這樣一直改下去,最后你的 Word 文檔變成了這樣:
http://wiki.jikexueyuan.com/project/git-tutorial/images/git0.jpg" alt="" />
過(guò)了一周,你想找回被刪除的文字,但是已經(jīng)記不清刪除前保存在哪個(gè)文件里了,只好一個(gè)一個(gè)文件去找,真麻煩。
看著一堆亂七八糟的文件,想保留最新的一個(gè),然后把其他的刪掉,又怕哪天會(huì)用上,還不敢刪,真郁悶。
更要命的是,有些部分需要你的財(cái)務(wù)同事幫助填寫(xiě),于是你把文件Copy到U盤(pán)里給她(也可能通過(guò) Email 發(fā)送一份給她),然后,你繼續(xù)修改 Word 文件。一天后,同事再把 Word 文件傳給你,此時(shí),你必須想想,發(fā)給她之后到你收到她的文件期間,你作了哪些改動(dòng),得把你的改動(dòng)和她的部分合并,真困難。
于是你想,如果有一個(gè)軟件,不但能自動(dòng)幫我記錄每次文件的改動(dòng),還可以讓同事協(xié)作編輯,這樣就不用自己管理一堆類(lèi)似的文件了,也不需要把文件傳來(lái)傳去。如果想查看某次改動(dòng),只需要在軟件里瞄一眼就可以,豈不是很方便?
這個(gè)軟件用起來(lái)就應(yīng)該像這個(gè)樣子,能記錄每次文件的改動(dòng):
版本 | 用戶(hù) | 說(shuō)明 | 日期 |
---|---|---|---|
1 | 張三 | 刪除了軟件服務(wù)條款5 | 7/12 10:38 |
2 | 張三 | 增加了License人數(shù)限制 | 7/12 18:09 |
3 | 李四 | 財(cái)務(wù)部門(mén)調(diào)整了合同金額 | 7/13 9:51 |
4 | 張三 | 延長(zhǎng)了免費(fèi)升級(jí)周期 | 7/14 15:17 |
這樣,你就結(jié)束了手動(dòng)管理多個(gè)“版本”的史前時(shí)代,進(jìn)入到版本控制的 21 世紀(jì)。
很多人都知道,Linus 在 1991 年創(chuàng)建了開(kāi)源的 Linux,從此,Linux 系統(tǒng)不斷發(fā)展,已經(jīng)成為最大的服務(wù)器系統(tǒng)軟件了。
Linus 雖然創(chuàng)建了 Linux,但 Linux 的壯大是靠全世界熱心的志愿者參與的,這么多人在世界各地為 Linux 編寫(xiě)代碼,那 Linux 的代碼是如何管理的呢?
事實(shí)是,在 2002 年以前,世界各地的志愿者把源代碼文件通過(guò) diff 的方式發(fā)給 Linus,然后由 Linus 本人通過(guò)手工方式合并代碼!
你也許會(huì)想,為什么 Linus 不把 Linux 代碼放到版本控制系統(tǒng)里呢?不是有 CVS、SVN 這些免費(fèi)的版本控制系統(tǒng)嗎?因?yàn)?Linus 堅(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)烈不滿(mǎn),于是 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ò)?。谑?BitMover 公司怒了,要收回 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)站上線(xiàn)了,它為開(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 了。