git使用系列01-->版本控制介紹

新夢想IT發表於2023-02-23



前言

成功不是將來才有的,而是從決定去做的那一刻起,持續累積而成。

在測試工作中,我們或多或少都接觸過svn\github,當然git是趨勢,筆者來一個系列的git,期待大家能有所收穫。 

一、版本控制概念

版本控制是指對軟體開發過程中各種程式程式碼、配置檔案及說明檔案等檔案變更的管理,是軟體配置管理的核心思想之一。

它的核心功能包括:

1、追蹤檔案的變更,它將什麼時候、什麼人更改了檔案的什麼內容等資訊忠實地了記錄下來。每一次檔案的改變,檔案的版本號都將增加

2、並行開發,軟體開發往往是多人協同作業,版本控制可以有效地解決版本的同步以及不同開發者之間的開發通訊問題,提高協同開發的效率

二、使用版本控制系統的優勢

協同合作:

每一個團隊成員都可以在任何時間對任何檔案毫無顧慮的進行修改,版本控制系統可以把之後所有的改動合併成一個共同的版本,不論是一個檔案還是整個專案。

正確儲存版本:

經常性地儲存專案的改動是一個非常重要的習慣。但是如果沒有版本控制系統這個操作將是非常困難的,並且非常容易出錯,比如:你如何知道在第一個版本和第二個版本之間到底進行了哪些改動?你如何命名這些版本?透過名字是很難追蹤和判斷改動

恢復之前的版本:

要把一些檔案恢復到上次改動之前的版本(甚至整個專案恢復到之前的版本)。

瞭解發生了什麼:

每當你提交一次對專案新的改動時,你的版本管理系統會要求你新增一個對這次改動的簡短描述。除此之外,你還可以看到一個改動前和改動後的內容的詳細對照。

備份:

每一個團隊成員都會在他的本地有一個完整的專案副本,包括整個專案的歷史記錄。如果你所依賴的伺服器當機了,或者是你的儲存硬碟壞,所有你需要的恢復檔案都可以在另外的團隊成員那得到。

三、版本控制工作包含內容

檢入檢出控制,軟體開發人員對原始檔的修改不能在軟體配置管理庫中進行,對原始檔的修改依賴於基本的檔案系統並在各自的工作空間下進行。為了方便軟體開發,需要不同的軟體開發人員組織各自的工作空間。一般說來,不同的工作空間由不同的目錄表示,而對工作空間的訪問,由檔案系統提供的檔案訪問許可權加以控制。

版本分支(以一個已有分支的特定版本為起點,但是獨立發展的版本序列)的人工方法就是從主版本——稱為主幹上複製一份,並做上標記。在實行了版本控制後,版本的分支也是一份複製,這時的複製過程和標記動作由版本控制系統完成。版本合併(來自不同分支的兩個版本合併為其中一個分支的新版本)有兩種途徑,一是將版本A的內容附加到版本B中;另一種是合併版本A和版本B的內容,形成新的版本C。

歷史記錄,版本的歷史記錄有助於對軟體配置項進行稽核,有助於追蹤問題的來源。歷史記錄包括版本號、版本修改時間、版本修改者、版本修改描述等最基本的內容,還可以有其他一些輔助性內容,比如版本的檔案大小和讀寫屬性。

四、版本控制系統發展史

4.1 本地版本控制系統:

許多人習慣用複製整個專案目錄的方式來儲存不同的版本,或許還會改名加上備份時間以示區別。 這麼做唯一的好處就是簡單,但是特別容易犯錯。 有時候會混淆所在的工作目錄,一不小心會寫錯檔案或者覆蓋意想外的檔案。

為瞭解決這個問題,人們很久以前就開發了許多種本地版本控制系統,大多都是採用某種簡單的資料庫來記錄檔案的歷次更新差異。

其中最流行的一種叫做 RCS,現今許多計算機系統上都還看得到它的蹤影。 RCS 的工作原理是在硬碟上儲存補丁集(補丁是指檔案修訂前後的變化);透過應用所有的補丁,可以重新計算出各個版本的檔案內容。


4.2 集中化版本控制系統:

Centralized Version Control Systems,簡稱 CVCS,與本地版本控制系統不同,集中化版本控制系統能讓在不同系統上的開發者進行協同工作。 這類系統,諸如 CVS、Subversion 以及 Perforce 等,都有一個單一的集中管理的伺服器,儲存所有檔案的修訂版本,而協同工作的人們都透過客戶端連到這臺伺服器,取出最新的檔案或者提交更新。 多年以來,這已成為版本控制系統的標準做法。

每個人都可以在一定程度上看到專案中的其他人正在做些什麼。而管理員也可以輕鬆掌控每個開發者的許可權,並且管理一個 CVCS 要遠比在各個客戶端上維護本地資料庫來得輕鬆容易。

集中化版本控制系統最顯而易見的缺點是中央伺服器的單點故障。如果當機一小時,那麼在這一小時內,誰都無法提交更新,也就無法協同工作。要是中央伺服器的磁碟發生故障,碰巧沒做備份,或者備份不夠及時,就會有丟失資料的風險。


4.3 分散式版本控制系統:

Distributed Version Control System,簡稱 DVCS,在這類系統中,像 Git、Mercurial、Bazaar 以及 Darcs 等,客戶端並不只提取最新版本的檔案快照, 而是把程式碼倉庫完整地映象下來,包括完整的歷史記錄。 這麼一來,任何一處協同工作用的伺服器發生故障,事後都可以用任何一個映象出來的本地倉庫恢復。 因為每一次的克隆操作,實際上都是一次對程式碼倉庫的完整備份。

更進一步來講,許多這類系統都可以指定和若干不同的遠端程式碼倉庫進行互動。籍此,你就可以在同一個專案中,分別和不同工作小組的人相互協作。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69940641/viewspace-2936550/,如需轉載,請註明出處,否則將追究法律責任。

相關文章