談?wù)勄袚Q到Git的8個(gè)理由
提到版本控制,最近大家都在談Git。當(dāng)然,四處議論紛紛還不足以證明切換到Git上有多么正確。這里有一些能證明Git非常出色的有力事實(shí)。
1. 節(jié)省時(shí)間
想象一下,每次動(dòng)鼠標(biāo)前你都要等待5分鐘。這非常討厭是不是?有了版本控制也是一樣——我們每個(gè)命令消耗幾秒,但是工作一天也累積起來了。但是Git快如閃電。把你的時(shí)間用在其他更重要的事情上,而不是等待版本控制工具的響應(yīng)。
2. 離線工作
你出差的時(shí)候要工作怎么辦?用諸如Subversion或者CVS的集中式版本控制系統(tǒng),如果你不能連上中央版本庫你就不能工作。有了Git,在你的本地機(jī)器上幾乎能做任何事:提交、查看項(xiàng)目完整歷史記錄、合并(merge)或者新建分支……Git讓你來決定何時(shí)何地開始工作。
3. 回退錯(cuò)誤
有時(shí)候我會(huì)犯錯(cuò)(我也不敢相信?。?。我喜歡Git的是它的一個(gè)小小的回退命令就能用于幾乎任何場景。修正最后一次提交,因?yàn)槟阃洶粋€(gè)小改動(dòng)。撤銷整個(gè)提交,因?yàn)槟莻€(gè)特性已經(jīng)不再需要。而且當(dāng)處境變得困難時(shí),你甚至可以用Reflog來恢復(fù)“已刪除”的提交——因?yàn)樵谀缓驡it極少會(huì)真正刪除什么。這樣心定氣閑。
4. 睡得香
你曾經(jīng)粉碎過Subversion的版本庫嗎?我就做過(我說這個(gè)的時(shí)候記憶的傷痛猶在)。有了Git,我可以信心十足,因?yàn)閳F(tuán)隊(duì)里每個(gè)人在自己電腦上的克隆就是一份可用的備份。另外Git里的幾乎每個(gè)操作都是增加數(shù)據(jù)(很少有刪除的)。想搞砸都很難。這種感覺很好。
5. 產(chǎn)生有用的提交
把牛奶、冰淇淋和番茄投到攪拌機(jī)里會(huì)有(至少)兩個(gè)問題。首先,啟動(dòng)攪拌機(jī)后,看著這一團(tuán)東西,沒人能說出你實(shí)際上放入的是什么。另外,你沒辦法把番茄再“回滾”。你做的一批不相關(guān)的提交(一點(diǎn)點(diǎn)A特性,再帶一點(diǎn)B特性,還有一個(gè)小小的補(bǔ)丁……)也是一樣的。對(duì)你的隊(duì)友來說,很難理解發(fā)生了什么。當(dāng)出現(xiàn)問題時(shí),他們也不能簡單地回滾特性A。Git能幫你避免這種混亂和創(chuàng)建粒狀提交。其獨(dú)一無二的“緩存區(qū)”概念能讓你決定在下一個(gè)提交里到底包含哪些改動(dòng),甚至小到哪些行。這是版本控制的用處所在。
6. 按自己的方式工作
當(dāng)用Git工作時(shí),你可以有你自己的工作流程。那個(gè)你覺得好的流程。使用Git你不需要成為編程高手。當(dāng)然你可以連接多個(gè)遠(yuǎn)程的版本庫,用變基(rebase)代替合并,需要時(shí)工作在子模塊上。但是你也可以只是簡單地工作在一個(gè)中央遠(yuǎn)程版本庫上,如同在用Subversion一樣。不管你的工作流程怎樣,所有其他的優(yōu)點(diǎn)都還在。
7. 不會(huì)把東西搞混了
分開關(guān)注是追蹤事情的最高原則。當(dāng)你工作在特性A上時(shí),任何事(人)都不會(huì)被你未完成的代碼所影響。如果這個(gè)特性不再需要了呢?或者如果在10個(gè)提交之后,你發(fā)現(xiàn)你做的完全不對(duì)呢?分支是這些問題的答案。其他的版本控制系統(tǒng)也有分支,但是Git是第一個(gè)讓它做好它該做的:快速簡單。
8. 潮流
只有死魚才隨波逐流。有時(shí)候聰明的開發(fā)者也這樣。Git被越來越多的知名公司和開源項(xiàng)目所使用:Ruby On Rails,jQuery,Perl,Debian,Linux內(nèi)核,還有很多。大型的社區(qū)通常自身就是一個(gè)優(yōu)點(diǎn),因?yàn)橐粋€(gè)生態(tài)圈會(huì)圍繞著該系統(tǒng)演進(jìn)。大量的學(xué)習(xí)指南,工具,還有服務(wù),會(huì)讓Git變得更加吸引人。
英文原文:git-tower,編譯:伯樂在線 – @奇風(fēng)余谷