鍍金池/ 教程/ Java/ Git 的誕生
操作標(biāo)簽
多人協(xié)作
解決沖突
Git 的誕生
工作區(qū)和暫存區(qū)
搭建 Git 服務(wù)器
Bug 分支
配置別名
從遠(yuǎn)程庫克隆
分支
添加遠(yuǎn)程庫
分支管理策略
撤銷修改
安裝 Git
管理修改
生成 SSH key
GitHub
倉庫狀態(tài)
忽略特殊文件
刪除文件
Feature 分支
創(chuàng)建與合并分支
創(chuàng)建版本庫
創(chuàng)建標(biāo)簽
版本回退
集中式 vs 分布式

Git 的誕生

Git 是什么?

Git 是目前世界上最先進(jìn)的分布式版本控制系統(tǒng)(沒有之一)。

Git 有什么特點(diǎn)?簡單來說就是:高端大氣上檔次!

那什么是版本控制系統(tǒng)?

如果你用 Microsoft Word 寫過長篇大論,那你一定有這樣的經(jīng)歷:

想刪除一個(gè)段落,又怕將來想恢復(fù)找不回來怎么辦?有辦法,先把當(dāng)前文件“另存為……”一個(gè)新的Word文件,再接著改,改到一定程度,再“另存為……”一個(gè)新文件,這樣一直改下去,最后你的 Word 文檔變成了這樣:

http://wiki.jikexueyuan.com/project/git-tutorial/images/git0.jpg" alt="" />

過了一周,你想找回被刪除的文字,但是已經(jīng)記不清刪除前保存在哪個(gè)文件里了,只好一個(gè)一個(gè)文件去找,真麻煩。

看著一堆亂七八糟的文件,想保留最新的一個(gè),然后把其他的刪掉,又怕哪天會(huì)用上,還不敢刪,真郁悶。

更要命的是,有些部分需要你的財(cái)務(wù)同事幫助填寫,于是你把文件Copy到U盤里給她(也可能通過 Email 發(fā)送一份給她),然后,你繼續(xù)修改 Word 文件。一天后,同事再把 Word 文件傳給你,此時(shí),你必須想想,發(fā)給她之后到你收到她的文件期間,你作了哪些改動(dòng),得把你的改動(dòng)和她的部分合并,真困難。

于是你想,如果有一個(gè)軟件,不但能自動(dòng)幫我記錄每次文件的改動(dòng),還可以讓同事協(xié)作編輯,這樣就不用自己管理一堆類似的文件了,也不需要把文件傳來傳去。如果想查看某次改動(dòng),只需要在軟件里瞄一眼就可以,豈不是很方便?

這個(gè)軟件用起來就應(yīng)該像這個(gè)樣子,能記錄每次文件的改動(dòng):

版本 用戶 說明 日期
1 張三 刪除了軟件服務(wù)條款5 7/12 10:38
2 張三 增加了License人數(shù)限制 7/12 18:09
3 李四 財(cái)務(wù)部門調(diào)整了合同金額 7/13 9:51
4 張三 延長了免費(fèi)升級(jí)周期 7/14 15:17

這樣,你就結(jié)束了手動(dòng)管理多個(gè)“版本”的史前時(shí)代,進(jìn)入到版本控制的 21 世紀(jì)。

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)?Linus 堅(jiān)定地反對 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ū)的弟兄們也對這種方式表達(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ò)!),于是 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 了。