Git--介紹

韓家小志發表於2020-12-10

1、為什麼我們需要git?

進行版本管理

  • 舉例:你在大學中寫論文
    • 寫論文的時候會出現很多個版本,每個版本都有自己特點
    • 論文v1.doc:最基本的論文框架
    • 論文v2.doc:新增了一個段落
    • 論文v3.doc:修改了一行
    • 論文v4.doc:新增的那個段落刪除,保留的修改的那一行,再修改一行
    • 論文v5.doc:恢復刪除的那個段落,保留修改的行
  • 問題1:如果我想回到某個版本怎麼辦?
    • 手動的管理和記錄每個版本之間的變化
  • 問題2:如果我讓別人幫我寫,我自己也寫,我想將別人寫的部分和我寫的部分合並怎麼辦?
    • 論文有10個部分,10個人來寫,我需要合併
    • 我覺得有個人寫的不好,我要重寫它的,再合併
  • 問題3:所有的操作都在手動管理,極其容易出現錯誤
    • 專案開發會存在同樣的問題
    • 整個專案由多個人共同開發,每個人開發的模組可能一樣也可能不一樣
    • 不一樣:每個人負責不同的 功能模組
    • 一樣:多個人共同負責一個模組
  • 問題4:程式碼會產生多個版本,版本如何控制?畢竟需求有時候不是那麼明確的啊~~~
    • 這個版本中沒有這個功能,但是我下個版本想要這個功能,下下一個版本這個功能又不需要了

產品

  • v1:A、B
    • 原來的版本,有A和B兩個功能
  • v2:A、C
    • 去掉了B功能,新增了C功能
  • v3:A、B、C
    • 新增了B這個功能
  • 如何實現多個人共同開發一個專案,能將專案的多個版本進行自由方便的管理
    • 甲:今天開發了一個版本,儲存這個版本
    • 乙:基於甲昨天開發的版本,進行繼續開發
    • 丙:負責開發另外一個版本

2、git的誕生

  • 專案版本管理工具:能自動的將多個版本進行儲存,類似於快照,多個人共享版本
  • Git:分散式專案管理工具,目前整個行業內最流行最受歡迎的專案版本管理工具
  • 開發者:Linus Torvalds
  • 小故事開講
    • Linux誕生以後,全球很多開發者開發了 很多個版本的Linux,提交給Linus Torvalds
    • Linus Torvalds 將優秀的程式碼整合在Linux核心中,手動管理所有的程式碼
    • Linus Torvalds 不喜歡傳統的免費CVS等工具,因為這些工具不好用,好用的都收費
    • Linus Torvalds 選擇了一個商業化的工具,達成協議–>可以免費使用
    • 於是團隊中的一個哥們有個想法:–>能不能破解這個東西?
    • 被發現了–>Linus Torvalds 保證不再破解
    • 兩週以後,Linus Torvalds 自己用C語言開發了Git,使用了類似於Linux的管理方式
    • Linus Torvalds :將Linux的版本控制切換到Git上
    • Git的開發汲取了其他的版本控制工具的優點,避免了缺點
    • 大佬的思維啊~~~

3、版本控制工具的對比

集中式:SVN

在這裡插入圖片描述

  • 所有版本的程式碼都集中在SVN的伺服器上
  • 任何一個開發者,都只能連線SVN伺服器,下載程式碼和上傳新的版本
  • 集中式:所有的開發都圍繞SVN伺服器為核心
  • 缺點
    • 必須聯網
    • 區域網:還是比較快的,但是回家以後就沒辦法開發了
      • 在公司下載好
      • 回家開發,只能開發一個版本
      • 回到公司上傳這個版本
    • 網際網路:特別慢
      • 在任何一個地方連線SVN伺服器,進行下載和上傳
    • 自己無法自動管理多個版本
    • SVN伺服器存在單點故障

分散式:Git

在這裡插入圖片描述

  • 去中心化模式
  • 優點
    • 不需要聯網,自己的筆記本就是個本地版本庫,直接利用自己的筆記本實現版本的管理
    • 自己可以管理任意多個版本
    • 不需要擔心公共的版本庫故障,每個人的本地都有版本庫

4、特點

  • 適合於分散式開發,多人可以共同開發,強調個體
  • 公共的版本庫伺服器的壓力不會太大
  • 速度快、更加靈活
  • 任意的開發者之間如果產生衝突也容易解決
  • 不需要聯網也可以實現多版本管理