Git(1) —— 版本控制

_thhhhh發表於2020-10-20

學習git之前,需要先明白的概念,版本控制!
在這裡插入圖片描述



1.什麼是版本控制/版本迭代

  • 版本控制(Revison control)是一種在開發的過程中用於管理我們對檔案、目錄或工程等內容的修改歷史,方便檢視更改歷史記錄,備份以便恢復以前的版本的軟體工程技術
    • 實現跨區域多人協同開發
    • 追蹤和記載一個或者多個檔案的歷史記錄
    • 組織和保護你的原始碼和文件
    • 統計工作量
    • 並行開發、提高開發效率
    • 跟蹤記錄整個軟體的開發過程
    • 減輕開發人員的負擔,節省時間,同時降低人為錯誤
  • 簡單說就是用於管理多人協同開發專案的技術
  • 沒有進行版本控制或者版本控制本身缺乏正確的流程管理,在軟體開發過程中將會引入很多問題,如軟體程式碼的冗餘、軟體過程的事務性、軟體開發過程中的併發性、軟體原始碼的安全性,以及軟體的整合問題
  • 無論是工作還是學習,或者自己做筆記,都經歷過這樣一個階段!我們就迫切需要一個版本控制工具!
  • 多人開發必須要使用 版本控制,否則代價會比較大!

2.常見的版本控制工具

  • 學習當下最流行的!
  • 主流的版本控制器有如下這些:
    • Git
    • SVN(Subversion)
    • CVS(Concurrent Versions System)
    • VSS(Microsoft Visual SourceSafe)
    • TFS (Team Foundation Server)
    • Visual Studio Online
  • 版本控制產品非常多(Perforce、Rational ClearCase、RCS(GNU Revision Control System)、BitKeeper、Monotone、Bazaar、Mercurial、SourceGear Vault),現在影響力最大且使用最廣泛的是Git與SVN

3.版本控制分類

1.本地版本控制

  • 記錄檔案每次的更新,可以對每一個版本做一個快照,或是記錄補丁檔案,適合個人用,如RCS
    在這裡插入圖片描述

2.集中版本控制 (svm)

  • 所有的版本資料都儲存在伺服器上,協同開發這從伺服器上同步更新或上傳自己的修改
    在這裡插入圖片描述
  • 所有的版本資料都儲存在伺服器上,協同開發者從伺服器上同步更新或上傳自己的修改;所有的版本資料都存在伺服器上,使用者的本地只有自己以前所同步的版本,如果不連網的話,使用者就看不到歷史版本,也無法切換版本驗證問題,或在不同分支工作。而且**,所有資料都儲存在單一的伺服器上,有很大的風險這個伺服器會損壞,這樣就會丟失所有的資料**,當然可以定期備份。代表產品:SVN、CVS、VSS

3.分散式版本控制 (代表產品:Git)

在這裡插入圖片描述

  • 每個人都擁有全部的程式碼!安全隱患!

  • 所有版本資訊倉庫全部同步到本地的每個使用者,這樣就可以在本地檢視所有版本歷史,可以離線在本地提交,只需在連網時push到相應的伺服器或其他使用者那裡。由於每個使用者那裡儲存的都是所有的版本資料,只要有一個使用者的裝置沒有問題就可以恢復所有的資料(以上特點可以看出Git針對性的解決了SVN的問題),但這增加了本地儲存空間的佔用(即分散式版本控制就是在一個公共伺服器[不是中央伺服器,分散式沒有中央伺服器]和所有使用者的計算機上都進行完整的備份,不管哪一個地方損壞,可以利用其他正常執行的站點進行同步,這樣資料就又可以恢復了)

  • 使用Git不會出現SVN那樣因為伺服器損壞或者網路問題,造成不能工作的情況!


4.Git和SVN最主要區別

  • SVN是集中式版本控制系統,版本庫是集中放在中央伺服器的,而工作的時候,用的都是自己的電腦,所有首先要從中央伺服器得到最新的版本,然後工作,完成工作後,需要把自己做完的活推送到中央伺服器,集中式版本控制系統是必須聯網才能工作,對網路頻寬要求較高
    在這裡插入圖片描述
  • Git是分散式版本控制系統,沒有中央伺服器,每個人的電腦就是一個完整的版本庫,工作的時候不需要聯網了,因為版本都在自己電腦上。Git系統的工作方法:比如說自己在電腦上改了檔案A,其他人也在電腦上改了檔案A,這是,你們兩之間只需把各自的修改推送給對方,就可以互相看到對方的修改了。Git可以直接看到更新了哪些程式碼和檔案!
  • Git是目前世界上最先進的分散式版本控制系統

相關文章