更新時間:2022-09-29 10:47:27 來源:動力節(jié)點 瀏覽1655次
什么是“版本控制”,你為什么要在意?版本控制是一個系統(tǒng),它記錄一段時間內(nèi)對一個文件或一組文件的更改,以便您以后可以調(diào)用特定的版本。對于本書中的示例,您將使用軟件源代碼作為受版本控制的文件,但實際上您可以對計算機(jī)上幾乎任何類型的文件執(zhí)行此操作。
如果你是一個圖形或網(wǎng)頁設(shè)計師,想要保留圖像或版面的每個版本(這是你最想做的),那么使用版本控制系統(tǒng)(VCS)是非常明智的。它允許您將選定的文件恢復(fù)到以前的狀態(tài),將整個項目恢復(fù)到以前狀態(tài),比較一段時間內(nèi)的更改,查看誰上次修改了可能導(dǎo)致問題的內(nèi)容,誰引入了問題以及何時引入了問題,等等。使用VCS通常還意味著,如果您把事情搞砸或丟失文件,您可以輕松恢復(fù)。此外,您只需很少的開銷就可以獲得所有這些。
許多人選擇的版本控制方法是將文件復(fù)制到另一個目錄(如果聰明的話,可能是一個帶有時間戳的目錄)。這種方法非常常見,因為它非常簡單,但也極易出錯。很容易忘記您所在的目錄,并意外寫入錯誤的文件或復(fù)制您無意中復(fù)制的文件。
為了解決這個問題,程序員很久以前就開發(fā)了本地VCS,它有一個簡單的數(shù)據(jù)庫,可以控制對文件的所有更改。
最流行的VCS工具之一是一個名為RCS的系統(tǒng),它至今仍在許多計算機(jī)上分發(fā)。RCS通過在磁盤上保留特殊格式的補丁集(即文件之間的差異)來工作;然后,它可以通過添加所有補丁,在任何時間點重新創(chuàng)建任何文件的外觀。
人們遇到的下一個主要問題是,他們需要與其他系統(tǒng)上的開發(fā)人員協(xié)作。為了解決這個問題,開發(fā)了集中式版本控制系統(tǒng)(CVCS)。這些系統(tǒng)(如CVS、Subversion和Perforce)有一個包含所有版本化文件的服務(wù)器,以及多個從該中心簽出文件的客戶端。多年來,這一直是版本控制的標(biāo)準(zhǔn)。
這種設(shè)置有很多優(yōu)點,尤其是與本地VCS相比。例如,每個人都在一定程度上知道項目中其他人在做什么。管理員可以細(xì)粒度地控制誰可以做什么,管理CVCS比處理每個客戶端上的本地數(shù)據(jù)庫要容易得多。
然而,這種設(shè)置也有一些嚴(yán)重的缺點。最明顯的是集中式服務(wù)器所代表的單點故障。如果該服務(wù)器宕機(jī)一個小時,那么在這一小時內(nèi),沒有人能夠進(jìn)行協(xié)作,也沒有人能夠保存對他們正在處理的任何內(nèi)容的版本更改。如果中央數(shù)據(jù)庫所在的硬盤損壞,并且沒有保存適當(dāng)?shù)膫浞荩敲茨鷮⑼耆ヒ磺?thinsp;— 項目的整個歷史,除了人們在本地機(jī)器上碰巧看到的任何單個快照。本地VCS也面臨同樣的問題 — 只要你在一個地方擁有整個項目的歷史,你就有失去一切的風(fēng)險。
這是分布式版本控制系統(tǒng)(DVCS)介入的地方。在DVCS(如Git、Mercurial、Bazaar或Darcs)中,客戶機(jī)不只是查看文件的最新快照;相反,它們完全反映了存儲庫,包括其完整歷史。因此,如果任何服務(wù)器死亡,并且這些系統(tǒng)通過該服務(wù)器進(jìn)行協(xié)作,則可以將任何客戶端存儲庫復(fù)制回服務(wù)器以進(jìn)行恢復(fù)。每個克隆實際上都是所有數(shù)據(jù)的完整備份。
此外,這些系統(tǒng)中的許多都能很好地處理多個遠(yuǎn)程存儲庫,因此您可以在同一項目中以不同的方式同時與不同的人員組協(xié)作。這允許您設(shè)置集中式系統(tǒng)中不可能的幾種工作流,例如層次模型。如果大家想了解更多相關(guān)知識,可以關(guān)注一下本站的Git教程,里面的課程內(nèi)容由淺到深,很適合沒有基礎(chǔ)的小伙伴學(xué)習(xí),希望對大家能夠有所幫助哦。
初級 202925
初級 203221
初級 202629
初級 203743