Table of Contents
集中式管理 Centralized Version Control Systems
以下內容均來源於git 官網中文版,然後學習並記錄,希望加強理解和起到歸納總結的作用
版本控制
版本控制是一種記錄一個或若干文件內容變化,以便將來查閱特定版本修訂情況的系統。 軟件工程中則記錄的是代碼和相關文件,我們用版本控制記錄着相關文件的變化。試想一下,沒有版本控制是一個很可怕的事情,對於一件長期在做的事情,我們希望瞭解每個時期其面貌。
集中式管理 Centralized Version Control Systems
首先,人們想到的是一箇中心管理點,協同人員通過客戶端連接到服務端,然後提交、更新。其缺點是需要實時保持通訊,否則
就不能記錄。中心數據庫所在的磁盤發生損壞,沒有做恰當備份,毫無疑問你將丟失所有數據——包括項目的整個變更歷史,只剩下人們在各自機器上保留的單獨快照。
分佈式版本控制系統
於是分佈式版本控制系統(Distributed Version Control System,簡稱 DVCS)面世了。 在這類系統中,像 Git、Mercurial、Bazaar 以及 Darcs 等,客戶端並不只提取最新版本的文件快照,而是把代碼倉庫完整地鏡像下來。
分佈式git版本管理優點
- 速度
- 簡單的設計
- 對非線性開發模式的強力支持(允許成千上萬個並行開發的分支)
- 完全分佈式
- 有能力高效管理類似 Linux 內核一樣的超大規模項目(速度和數據量)
git 的很多操作都是再本地完成,在有網的時候聯網並進行push 數據。
git 三種狀態
Git 有三種狀態,你的文件可能處於其中之一:已提交(committed)、已修改(modified)和已暫存(staged)。 已提交表示數據已經安全的保存在本地數據庫中。 已修改表示修改了文件,但還沒保存到數據庫中。 已暫存表示對一個已修改文件的當前版本做了標記,使之包含在下次提交的快照中。
由此引入 Git 項目的三個工作區域的概念:Git 倉庫、工作目錄以及暫存區域。
Git 倉庫目錄是 Git 用來保存項目的元數據和對象數據庫的地方。 這是 Git 中最重要的部分,從其它計算機克隆倉庫時,拷貝的就是這裏的數據。
工作目錄是對項目的某個版本獨立提取出來的內容。 這些從 Git 倉庫的壓縮數據庫中提取出來的文件,放在磁盤上供你使用或修改。
暫存區域是一個文件,保存了下次將提交的文件列表信息,一般在 Git 倉庫目錄中。 有時候也被稱作“索引”,不過一般說法還是叫暫存區域。
基本的 Git 工作流程如下:
-
在工作目錄中修改文件。
-
暫存文件,將文件的快照放入暫存區域。
-
提交更新,找到暫存區域的文件,將快照永久性存儲到 Git 倉庫目錄。
如果 Git 目錄中保存着特定版本的文件,就屬於已提交狀態。 如果作了修改並已放入暫存區域,就屬於已暫存狀態。 如果自上次取出後,作了修改但還沒有放到暫存區域,就是已修改狀態。
git 的後續很多概念都是從這三個狀態引出的,要理解這一點,對後續的掌握很有幫助。
git 命令行
git之出是爲了解決linux 開源項目中的全球各地的開發者提交的代碼而設計的,當然也很注重命令行的,所以強烈建議之間學習命令行而不是 各種GUI ,因爲首先,只有在命令行模式下你才能執行 Git 的 所有 命令,而大多數的 GUI 軟件只實現了 Git 所有功能的一個子集以降低操作難度。 如果你學會了在命令行下如何操作,那麼你在操作 GUI 軟件時應該也不會遇到什麼困難,但是,反之則不成立。
git 安裝
git的安裝對於Linux 和Mac 系統很友好,直接可以用命令行實現,但window 則不行,支持的不是很好。可以在官網下載相關軟件,實現安裝。另外,可以通過源碼安裝,可以實時得到最新版本,但這種方式需要自己編譯,並且需要下載其他的軟件庫來實現編譯,有一定難度。