出版時(shí)間:2011-6 出版社:機(jī)械工業(yè)出版社華章公司 作者:蔣鑫 頁數(shù):595
Tag標(biāo)簽:無
前言
版本控制是管理數(shù)據(jù)變更的藝術(shù),無論數(shù)據(jù)變更是來自同一個(gè)人,還是來自不同的人(一個(gè)團(tuán)隊(duì))。版本控制系統(tǒng)不但要忠實(shí)地記錄數(shù)據(jù)的每一次變更,還要能夠幫助還原任何一次歷史變更,以及實(shí)現(xiàn)團(tuán)隊(duì)的協(xié)同工作等。Git 就是版本控制系統(tǒng)中的佼佼者。我對(duì)版本控制系統(tǒng)的興趣源自于我的個(gè)人知識(shí)管理實(shí)踐,其核心就是撰寫可維護(hù)的文檔,并保存于版本控制系統(tǒng)中。可維護(hù)文檔的格式可以是 DocBook、FreeMind、reStructuredText 等。我甚至還對(duì) FreeMind 加以改造以便讓其文檔格式更適合于版本控制系統(tǒng),這就是我的第一個(gè)開源實(shí)踐:托管于 SourceForge 上的 FreeMind-MMX 項(xiàng)目①。文檔書寫格式的問題解決之后,就是文檔的存儲(chǔ)問題了。通過版本控制系統(tǒng),很自然地就可以實(shí)現(xiàn)對(duì)文檔歷史版本的保存,但是如何避免因?yàn)榘姹究刂葡到y(tǒng)癱瘓而導(dǎo)致數(shù)據(jù)丟失呢?Git 用其嶄新的分布式的版本控制設(shè)計(jì)提供了最好的解決方案。使用 Git,我的知識(shí)庫不再只有唯一的版本庫與之對(duì)應(yīng),而是可以通過克隆操作分發(fā)到不同的磁盤或主機(jī)上,克隆的版本庫之間通過推送(PUSH)和拉回(PULL)等操作進(jìn)行同步,數(shù)據(jù)安全得到了極大的提升。在版本控制系統(tǒng)的忠實(shí)呵護(hù)下,我的知識(shí)庫中關(guān)于Git的 FreeMind 腦圖在日積月累中變得越來越翔實(shí),越來越清晰,最終成為本書的雛形。版本控制能決定項(xiàng)目的成敗,甚至是公司的生死,此言不虛。我在推廣開源項(xiàng)目管理工具和為企業(yè)提供咨詢服務(wù)的過程中看到,有很多團(tuán)隊(duì)因?yàn)榘姹究刂葡到y(tǒng)管理的混亂導(dǎo)致項(xiàng)目延期、修正的 Bug 重現(xiàn)、客戶的問題不能在代碼中定位……無論他們使用的是什么版本控制系統(tǒng)(開源的或是商業(yè)的)都是如此。這是因?yàn)閭鹘y(tǒng)的集中式版本控制系統(tǒng)不能有效地管理分支和進(jìn)行分支間合并。集中管理的版本庫只有唯一的分支命名空間,需要專人管理,從而造成分支創(chuàng)建的不自由;分支間的合并要么因?yàn)槿狈ψ粉檶?dǎo)致重復(fù)合并、引發(fā)嚴(yán)重沖突,要么因?yàn)榘姹究刂葡到y(tǒng)本身蹩腳的設(shè)計(jì)導(dǎo)致分支合并時(shí)效率低下和陷阱重重。Git憑借其靈活的設(shè)計(jì)讓項(xiàng)目擺脫分支管理的夢(mèng)魘。我的公司也經(jīng)歷過代碼管理的生死考驗(yàn)。因?yàn)楣镜拈_發(fā)模式主要是基于開源軟件的二次開發(fā),所以最早在使用SVN(Subversion)做版本控制時(shí),很自然地使用了SVN賣主分支模型來管理代碼。隨著增加和修改的代碼越來越多,我們開發(fā)的軟件與開源軟件上游的偏離也越來越遠(yuǎn),當(dāng)上游有新版本發(fā)布時(shí),最早可能只用幾個(gè)小時(shí)就可以將改動(dòng)遷移過去,但是如果對(duì)上游的改動(dòng)多達(dá)幾十甚至上百處時(shí),遷移的過程就會(huì)異常痛苦,基本上和重新做一遍差不多。那時(shí)似乎只有一種選擇:不再與上游合并,不再追蹤上游的改動(dòng),而這與公司的價(jià)值觀“發(fā)動(dòng)全球智慧為客戶創(chuàng)造價(jià)值”相違背。迷茫之中,分布式版本控制系統(tǒng)飄然而至,原來版本控制還可以這么做。我最先嘗試的分布式版本控制系統(tǒng)是 Hg(Mercurial),當(dāng)發(fā)現(xiàn)Hg和 MQ(Hg 的一個(gè)插件)這一對(duì)寶貝兒的時(shí)候,我如獲至寶。逐漸地,公司的版本庫都遷移到了Hg上。但隨著新的開發(fā)人員的加入,問題又出現(xiàn)了,一個(gè)人使用Hg和MQ很好,但多個(gè)人使用時(shí)則會(huì)出現(xiàn)難以協(xié)同的問題。于是我們大膽地采用了 Git,并在實(shí)踐中結(jié)合 Topgit 等工具進(jìn)行代碼的管理。再一次,也許是最后一次,我們的代碼庫遷移到了 Git。最早認(rèn)識(shí)分布式版本控制,源自于我們看到了眾多開源項(xiàng)目的版本控制系統(tǒng)大遷移,這場(chǎng)遷移還在進(jìn)行中。MoinMoin 是我們關(guān)注的一個(gè)開源的維基軟件,2006 年,它的代碼庫從SVN遷移到了Hg。Mailman 同樣是我們關(guān)注的一個(gè)開源郵件列表軟件。2007 年,它的代碼庫從SVN遷移到了 Bazaar。Linux 采用Git作為版本控制系統(tǒng)(一點(diǎn)都不奇怪,因?yàn)镚it就是 Linus Torvalds 開發(fā)的)。 Android 是目前最為流行的開源項(xiàng)目之一,因?yàn)闈撛谑袌?chǎng)巨大,已經(jīng)吸引了越來越多的開發(fā)者進(jìn)入這個(gè)市場(chǎng),而Android就是用Git維護(hù)的。當(dāng)開源軟件紛紛倒向分布式版本控制系統(tǒng)大旗(尤其是Git)的時(shí)候,很多商業(yè)公司也在行動(dòng)了,尤其是涉及異地團(tuán)隊(duì)協(xié)同和Android核心代碼定制開發(fā)的公司。對(duì)于那些因保守而不敢向Git靠攏的公司,Git也可以派上用場(chǎng),因?yàn)镚it可以與現(xiàn)在大多數(shù)公司部署的SVN很好地協(xié)同,即公司的服務(wù)器是 SVN,開發(fā)者的客戶端則使用 Git。相信隨著Git的普及,以及公司在代碼管理觀念上的改進(jìn),會(huì)有更多的公司擁抱 Git。
內(nèi)容概要
《Git權(quán)威指南》是Git領(lǐng)域的集大成之作,是一本關(guān)于Git的百科全書,在廣度、深度和實(shí)戰(zhàn)性上讓同類作品望塵莫及。作者是國內(nèi)頂尖的版本控制專家和咨詢顧問之一,本書得到了Git官方維護(hù)者Junio
C Hamano和ITeye創(chuàng)始人范凱(Robbin)先生等數(shù)位專家的高度認(rèn)可和極力推薦,權(quán)威性毋庸置疑。
全書一共9篇,共41章和4個(gè)附錄,內(nèi)容幾乎涵蓋了Git的所有方面。第1篇介紹了版本控制工具的演變歷史、Git的各種優(yōu)點(diǎn),以及它在3種主流操作系統(tǒng)中的安裝與配置。第2篇和第3篇既是本書的基礎(chǔ),又是本書的核心,不僅介紹了Git的操作和使用,而且還講解了Git的原理。第2篇詳細(xì)講解了個(gè)人用戶如何使用Git,包括Git初始化、日常操作、暫存區(qū)、對(duì)象、重置、檢出、恢復(fù)進(jìn)度、歷史變更、克隆、庫管理等;第3篇詳細(xì)講解了Git協(xié)議和團(tuán)隊(duì)如何使用Git,包括Git支持的協(xié)議、沖突解決、里程碑、分支、遠(yuǎn)程版本庫和補(bǔ)丁文件交互等。第4篇全面介紹了Git的協(xié)同模型,即它在實(shí)際工作中的使用模式,包括各種經(jīng)典的Git協(xié)同模型、Topgit協(xié)同模型、子模組協(xié)同模型、子樹合并、Android多版本庫協(xié)同、Git與SVN協(xié)同模型等。第5篇介紹了Git服務(wù)器的架設(shè),首先講解了HTTP協(xié)議、Git協(xié)議、SSH協(xié)議的使用,然后講解了Gitolite、Gitosis、Gerrit等服務(wù)器的架設(shè)方法,最后還講解了Git版本庫的托管。第6篇介紹了版本庫的遷移,包括如何從CVS、SVN、Hg等版本庫遷移到Git,以及Git版本庫整理等方面的內(nèi)容。第7篇講解了Git的其他應(yīng)用,包括etckeeper、Gistore等的安裝、配置和使用,以及補(bǔ)丁中的二進(jìn)制文件和云存儲(chǔ)等內(nèi)容。第8篇介紹了Git的跨平臺(tái)操作,以及它的鉤子和模板、稀疏檢出和淺克隆、嫁接和替換等重要特性。第9篇是附錄,詳細(xì)給出了Git的命令索引,以及CVS、SVN和Hg與Git的比較與命令對(duì)照,方便讀者查閱。
作者簡介
蔣鑫,國內(nèi)頂尖的版本控制專家和咨詢顧問之一,對(duì)Subversion和Git等版本控制工具有十分深入的研究,參與了Git以及Gitosis、Gitolite、Repo、Topgit、Gistore等與Git相關(guān)的開源軟件的開發(fā)或創(chuàng)建,在大量實(shí)踐中積累了豐富的經(jīng)驗(yàn)。此外,他還是一位開源軟件實(shí)踐者,作為北京群英匯信息技術(shù)有限公司的創(chuàng)始人兼高級(jí)顧問,一直從事開源軟件的定制以及面向研發(fā)團(tuán)隊(duì)的項(xiàng)目管理軟件的推廣和顧問咨詢工作,致力于推動(dòng)開源軟件在中國的發(fā)展。
書籍目錄
前言
第1篇 初識(shí)Git
第1章 版本控制的前世和今生
第2章 愛上Git的理由
第3章 Git的安裝和使用
第2篇 Git獨(dú)奏
第4章 Git初始化
第5章 Git暫存區(qū)
第6章 Git對(duì)象
第7章 Git重置
第8章 Git檢出
第9章 恢復(fù)進(jìn)度
第10章 Git基本操作
第11章 歷史穿梭
第12章 改變歷史
第13章 Git克隆
第14章 Git庫管理
第3篇 Git和聲
第15章 Git協(xié)議與工作協(xié)同
第16章 沖突解決
第17章 Git里程碑
第18章 Git分支
第19章 遠(yuǎn)程版本庫
第20章 補(bǔ)丁文件交互
第4篇 Git協(xié)同模型
第21章 經(jīng)典Git協(xié)同模型
第22章 Topgit協(xié)同模型
第23章 子模組協(xié)同模型
第24章 子樹合并
第25章 Android式多版本庫協(xié)同
第26章 Git和SVN協(xié)同模型
第5篇 搭建Git服務(wù)器
第27章 使用http協(xié)議
第28章 使用Git協(xié)議
第29章 使用SSH協(xié)議
第30章 Gitolite服務(wù)架設(shè)
第31章 Gitosis服務(wù)架設(shè)
第32章 Gerrit代碼審核服務(wù)器
第33章 Git版本庫托管
第6篇 遷移到Git
第34章 CVS版本庫到Git的遷移
第35章 更多版本控制系統(tǒng)的遷移
第7篇 Git的其他應(yīng)用
第36章 etckeeper
第37章 Gistore
第38章 補(bǔ)丁中的二進(jìn)制文件
第39章 云存儲(chǔ)
第8篇 Git雜談
第40章 跨平臺(tái)操作
第41章 Git的其他特性
第9篇 附錄
附錄
媒體關(guān)注與評(píng)論
009年9月,我出版了一本針對(duì)日本讀者的Git專著,當(dāng)Linus收到我贈(zèng)送的簽名本時(shí),他對(duì)我說:“除了截圖和命令行示例外,其他我什么也看不懂”(Linus不懂日文)。因?yàn)橥瑯拥脑?,雖然我不能了解蔣鑫這本書的全部內(nèi)容,但是我可以看出這本書涵蓋了非常廣泛的主題,并且可以看出蔣鑫對(duì)這本書的用心。我非常高興能夠看到這本書的出版,感謝向世界傳播Git。——Junio C Hamano Git維護(hù)者(2005年7月至今)仔細(xì)拜讀了本書前三篇共20章的內(nèi)容,感覺這本書極好。作者在軟件版本控制系統(tǒng)方面有超過10年的經(jīng)驗(yàn),對(duì)版本控制系統(tǒng)有非常深入的認(rèn)識(shí)。尤為難得的是,本書文筆很流暢,雖然是技術(shù)書籍,但是作者娓娓道來,閱讀體驗(yàn)很好。Git的學(xué)習(xí)門檻較高,包括我們公司在內(nèi)的很多企業(yè)都將版本控制系統(tǒng)轉(zhuǎn)向了Git,強(qiáng)烈推薦大家看一看?!秳P(Robbin) CSDN平臺(tái)開發(fā)總監(jiān)/ITeye(www.iteye.com)創(chuàng)始人這是我讀過的最好的關(guān)于Git的書。將復(fù)雜的Git解釋得清晰而透徹絕非易事,蔣鑫做到了,更讓人驚喜的是,他還分享了大量的經(jīng)驗(yàn)總結(jié)。我?guī)啄陙砝鄯e下來的諸多疑惑都在讀罷該書后一一得以解開。如果你正在使用,或者打算使用Git,本書當(dāng)然是必備的。你也可以抱著Subversion或CVS不放,不過,如果哪一天有人拿起這本書敲你的頭時(shí)可別怪我沒提醒過你?!S曉斌(Juven Xu) 資深Maven專家/著有暢銷書《Maven實(shí)戰(zhàn)》Git是當(dāng)前開源社區(qū)最流行的版本控制系統(tǒng),代表了版本控制的未來。每一位有志于從事軟件開發(fā)的學(xué)習(xí)者都應(yīng)該學(xué)習(xí)和掌握這一工具,它不但可用于追蹤編程者的思考過程,還是打開開源軟件世界的金鑰匙,更可以通過版本控制掌握與他人協(xié)同工作的技能。本書是一本耐讀的原創(chuàng)著作,因?yàn)槠浜w的內(nèi)容之廣足以讓每一位程序員在成長的不同階段都可以從中汲取豐富營養(yǎng)?!?馮鈴 清華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)系“長江學(xué)者”兼特聘教授目前市面上關(guān)于Git的書不在少數(shù),但迄今為止,國內(nèi)外還沒有一本書能在廣度和深度上達(dá)到本書的水平,也許在今后相當(dāng)長的一段時(shí)間內(nèi)也不會(huì)有。如果你是一位軟件開發(fā)者,強(qiáng)烈建議你學(xué)習(xí)并使用Git;如果你要學(xué)習(xí)Git,本書無疑是你最佳的選擇?!炖^哲 哲思社區(qū)(http://www.zeuux.org/)創(chuàng)始人
編輯推薦
《Git權(quán)威指南》編輯推薦:Git領(lǐng)域的集大成之作,在廣度、深度和實(shí)戰(zhàn)性上均史無前例;國內(nèi)頂級(jí)Git專家親自撰寫,Git官方維護(hù)者等數(shù)位專家聯(lián)袂推薦。
圖書封面
圖書標(biāo)簽Tags
無
評(píng)論、評(píng)分、閱讀與下載