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