1. 程式人生 > >學習 Git(使用手冊)

學習 Git(使用手冊)

Git是一款免費、開源的分散式版本控制系統,用於敏捷高效地處理任何或小或大的專案。 Git的讀音為/gɪt/。

Git是一個開源的分散式版本控制系統,可以有效、高速的處理從很小到非常大的專案版本管理。 Git 是 Linus Torvalds 為了幫助管理 Linux 核心開發而開發的一個開放原始碼的版本控制軟體。

Torvalds 開始著手開發 Git 是為了作為一種過渡方案來替代 BitKeeper,後者之前一直是 Linux 核心開發人員在全球使用的主要原始碼工具。開放原始碼社群中的有些人覺得BitKeeper 的許可證並不適合開放原始碼社群的工作,因此 Torvalds 決定著手研究許可證更為靈活的版本控制系統。儘管最初 Git 的開發是為了輔助 Linux 核心開發的過程,但是我們已經發現在很多其他自由軟體專案中也使用了 Git。例如 很多 Freedesktop 的專案遷移到了 Git 上。

特點:

分散式相比於集中式的最大區別在於開發者可以提交到本地,每個開發者通過克隆(git clone),在本地機器上拷貝一個完整的Git倉庫。

下圖是經典的git開發過程。

Git的功能特性:

從一般開發者的角度來看,git有以下功能:

  • 從伺服器上克隆完整的Git倉庫(包括程式碼和版本資訊)到單機上。
  • 在自己的機器上根據不同的開發目的,建立分支,修改程式碼。
  • 在單機上自己建立的分支上提交程式碼。
  • 在單機上合併分支。
  • 把伺服器上最新版的程式碼fetch下來,然後跟自己的主分支合併。
  • 生成補丁(patch),把補丁傳送給主開發者。
  • 看主開發者的反饋,如果主開發者發現兩個一般開發者之間有衝突(他們之間可以合作解決的衝突),就會要求他們先解決衝突,然後再由其中一個人提交。如果主開發者可以自己解決,或者沒有衝突,就通過。
  • 一般開發者之間解決衝突的方法,開發者之間可以使用pull 命令解決衝突,解決完衝突之後再向主開發者提交補丁。

從主開發者的角度(假設主開發者不用開發程式碼)看,git有以下功能:

  1. 檢視郵件或者通過其它方式檢視一般開發者的提交狀態。
  2. 打上補丁,解決衝突(可以自己解決,也可以要求開發者之間解決以後再重新提交,如果是開源專案,還要決定哪些補丁有用,哪些不用)。
  3. 向公共伺服器提交結果,然後通知所有開發人員。

優點:

  • 適合分散式開發,強調個體。
  • 公共伺服器壓力和資料量都不會太大。
  • 速度快、靈活。
  • 任意兩個開發者之間可以很容易的解決衝突。
  • 離線工作。
  • 缺點:
  • 資料少(起碼中文資料很少)。
  • 學習週期相對而言比較長。
  • 不符合常規思維。
  • 程式碼保密性差,一旦開發者把整個庫克隆下來就可以完全公開所有程式碼和版本資訊。

更多精品課程: