關(guān)于版本控制

為了更好的 Git 入門(mén)岖免。 我們從介紹版本控制工具的背景知識(shí)開(kāi)始,然后講解如何在你的系統(tǒng)上運(yùn)行 Git照捡,最后是關(guān)于如何設(shè)置 Git 以便開(kāi)始工作颅湘。 通過(guò)本章的學(xué)習(xí),你應(yīng)該能了解為什么 Git 這么流行栗精,為什么你應(yīng)該使用 Git 以及你應(yīng)該如何設(shè)置以便使用 Git栅炒。

關(guān)于版本控制

什么是“版本控制”?我為什么要關(guān)心它呢术羔? 版本控制是一種記錄一個(gè)或若干文件內(nèi)容變化赢赊,以便將來(lái)查閱特定版本修訂情況的系統(tǒng)。 在本書(shū)所展示的例子中级历,我們對(duì)保存著軟件源代碼的文件作版本控制释移,但實(shí)際上,你可以對(duì)任何類(lèi)型的文件進(jìn)行版本控制寥殖。

如果你是位圖形或網(wǎng)頁(yè)設(shè)計(jì)師玩讳,可能會(huì)需要保存某一幅圖片或頁(yè)面布局文件的所有修訂版本(這或許是你非常渴望擁有的功能)嚼贡,采用版本控制系統(tǒng)(VCS)是個(gè)明智的選擇熏纯。 有了它你就可以將選定的文件回溯到之前的狀態(tài),甚至將整個(gè)項(xiàng)目都回退到過(guò)去某個(gè)時(shí)間點(diǎn)的狀態(tài)粤策,你可以比較文件的變化細(xì)節(jié)樟澜,查出最后是誰(shuí)修改了哪個(gè)地方,從而找出導(dǎo)致怪異問(wèn)題出現(xiàn)的原因叮盘,又是誰(shuí)在何時(shí)報(bào)告了某個(gè)功能缺陷等等秩贰。 使用版本控制系統(tǒng)通常還意味著,就算你亂來(lái)一氣把整個(gè)項(xiàng)目中的文件改的改刪的刪柔吼,你也照樣可以輕松恢復(fù)到原先的樣子毒费。 但額外增加的工作量卻微乎其微。

本地版本控制系統(tǒng)

許多人習(xí)慣用復(fù)制整個(gè)項(xiàng)目目錄的方式來(lái)保存不同的版本愈魏,或許還會(huì)改名加上備份時(shí)間以示區(qū)別觅玻。 這么做唯一的好處就是簡(jiǎn)單,但是特別容易犯錯(cuò)培漏。 有時(shí)候會(huì)混淆所在的工作目錄溪厘,一不小心會(huì)寫(xiě)錯(cuò)文件或者覆蓋意想外的文件。

為了解決這個(gè)問(wèn)題北苟,人們很久以前就開(kāi)發(fā)了許多種本地版本控制系統(tǒng)桩匪,大多都是采用某種簡(jiǎn)單的數(shù)據(jù)庫(kù)來(lái)記錄文件的歷次更新差異打瘪。

本地版本控制

其中最流行的一種叫做 RCS友鼻,現(xiàn)今許多計(jì)算機(jī)系統(tǒng)上都還看得到它的蹤影傻昙。 RCS 的工作原理是在硬盤(pán)上保存補(bǔ)丁集(補(bǔ)丁是指文件修訂前后的變化);通過(guò)應(yīng)用所有的補(bǔ)丁彩扔,可以重新計(jì)算出各個(gè)版本的文件內(nèi)容妆档。

集中化的版本控制系統(tǒng)

接下來(lái)人們又遇到一個(gè)問(wèn)題,如何讓在不同系統(tǒng)上的開(kāi)發(fā)者協(xié)同工作虫碉? 于是贾惦,集中化的版本控制系統(tǒng)(Centralized Version Control Systems,簡(jiǎn)稱(chēng) CVCS)應(yīng)運(yùn)而生敦捧。 這類(lèi)系統(tǒng)须板,諸如 CVS、Subversion 以及 Perforce 等兢卵,都有一個(gè)單一的集中管理的服務(wù)器习瑰,保存所有文件的修訂版本,而協(xié)同工作的人們都通過(guò)客戶(hù)端連到這臺(tái)服務(wù)器秽荤,取出最新的文件或者提交更新甜奄。 多年以來(lái),這已成為版本控制系統(tǒng)的標(biāo)準(zhǔn)做法窃款。

集中化的版本控制

這種做法帶來(lái)了許多好處课兄,特別是相較于老式的本地 VCS 來(lái)說(shuō)。 現(xiàn)在晨继,每個(gè)人都可以在一定程度上看到項(xiàng)目中的其他人正在做些什么烟阐。 而管理員也可以輕松掌控每個(gè)開(kāi)發(fā)者的權(quán)限,并且管理一個(gè) CVCS 要遠(yuǎn)比在各個(gè)客戶(hù)端上維護(hù)本地?cái)?shù)據(jù)庫(kù)來(lái)得輕松容易紊扬。

事分兩面曲饱,有好有壞。 這么做最顯而易見(jiàn)的缺點(diǎn)是中央服務(wù)器的單點(diǎn)故障珠月。 如果宕機(jī)一小時(shí)扩淀,那么在這一小時(shí)內(nèi),誰(shuí)都無(wú)法提交更新啤挎,也就無(wú)法協(xié)同工作驻谆。 如果中心數(shù)據(jù)庫(kù)所在的磁盤(pán)發(fā)生損壞,又沒(méi)有做恰當(dāng)備份庆聘,毫無(wú)疑問(wèn)你將丟失所有數(shù)據(jù)——包括項(xiàng)目的整個(gè)變更歷史胜臊,只剩下人們?cè)诟髯詸C(jī)器上保留的單獨(dú)快照。 本地版本控制系統(tǒng)也存在類(lèi)似問(wèn)題伙判,只要整個(gè)項(xiàng)目的歷史記錄被保存在單一位置象对,就有丟失所有歷史更新記錄的風(fēng)險(xiǎn)。

分布式版本控制系統(tǒng)

于是分布式版本控制系統(tǒng)(Distributed Version Control System宴抚,簡(jiǎn)稱(chēng) DVCS)面世了勒魔。 在這類(lèi)系統(tǒng)中甫煞,像 Git、Mercurial冠绢、Bazaar 以及 Darcs 等抚吠,客戶(hù)端并不只提取最新版本的文件快照, 而是把代碼倉(cāng)庫(kù)完整地鏡像下來(lái)弟胀,包括完整的歷史記錄楷力。 這么一來(lái),任何一處協(xié)同工作用的服務(wù)器發(fā)生故障孵户,事后都可以用任何一個(gè)鏡像出來(lái)的本地倉(cāng)庫(kù)恢復(fù)萧朝。 因?yàn)槊恳淮蔚目寺〔僮鳎瑢?shí)際上都是一次對(duì)代碼倉(cāng)庫(kù)的完整備份夏哭。


分布式版本控制

更進(jìn)一步剪勿,許多這類(lèi)系統(tǒng)都可以指定和若干不同的遠(yuǎn)端代碼倉(cāng)庫(kù)進(jìn)行交互。值此方庭,你就可以在同一個(gè)項(xiàng)目中厕吉,分別和不同工作小組的人相互協(xié)作。 你可以根據(jù)需要設(shè)定不同的協(xié)作流程械念,比如層次模型式的工作流头朱,而這在以前的集中式系統(tǒng)中是無(wú)法實(shí)現(xiàn)的。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末龄减,一起剝皮案震驚了整個(gè)濱河市项钮,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌希停,老刑警劉巖烁巫,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異宠能,居然都是意外死亡亚隙,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)违崇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)阿弃,“玉大人,你說(shuō)我怎么就攤上這事羞延≡荆” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵伴箩,是天一觀的道長(zhǎng)入愧。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么棺蛛? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任怔蚌,我火速辦了婚禮,結(jié)果婚禮上鞠值,老公的妹妹穿的比我還像新娘媚创。我一直安慰自己渗钉,他們只是感情好彤恶,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著鳄橘,像睡著了一般声离。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上瘫怜,一...
    開(kāi)封第一講書(shū)人閱讀 51,482評(píng)論 1 302
  • 那天术徊,我揣著相機(jī)與錄音,去河邊找鬼鲸湃。 笑死赠涮,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的暗挑。 我是一名探鬼主播笋除,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼炸裆!你這毒婦竟也來(lái)了垃它?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤烹看,失蹤者是張志新(化名)和其女友劉穎国拇,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體惯殊,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡酱吝,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了土思。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片掉瞳。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖浪漠,靈堂內(nèi)的尸體忽然破棺而出陕习,到底是詐尸還是另有隱情,我是刑警寧澤址愿,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布该镣,位于F島的核電站,受9級(jí)特大地震影響响谓,放射性物質(zhì)發(fā)生泄漏损合。R本人自食惡果不足惜省艳,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望嫁审。 院中可真熱鬧跋炕,春花似錦、人聲如沸律适。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)捂贿。三九已至纠修,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間厂僧,已是汗流浹背扣草。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留颜屠,地道東北人辰妙。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像甫窟,于是被迫代替她去往敵國(guó)和親密浑。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354