Git基礎概念(1)

1.Git的基本概念

Git 是分佈式版本控制和源代碼管理系統,重點使用和管理代碼的速度。 Git 最初是由Linus Torvalds設計開發的,用於管理Linux內核開發。Git 是根據GNU通用公共許可證版本2的條款分發的自由/免費軟件。

Git官方網址是:https://git-scm.com/

2.幾個專業術語

Workspace:工作區

Index/Stage:暫存區,也叫索引

Repository: 倉庫區(或本地倉庫),也存儲庫

Remote:      遠程倉庫

工作區: 通過git init創建的代碼庫的所有文件但是不包括.git文件(版本庫)

暫存區: 通過git add ./*/*Xxx/Xxxx* 添加的修改,都是進入到暫存區了,肉眼不可見 通過 git status 可以看到修改的狀態。

3.分佈式版本控制系統

分佈式版本控制系統(Distributed Version Control System,簡稱 DVCS), 在這類系統中,像 Git、Mercurial、Bazaar 以及 Darcs 等,客戶端並不只提取最新版本的文件快照,而是把代碼倉庫完整地鏡像下來。 這麼一來,任何一處協同工作用的服務器發生故障,事後都可以用任何一個鏡像出來的本地倉庫恢復。 因爲每一次的克隆操作,實際上都是一次對代碼倉庫的完整備份。如下圖所示:

4.Git的優勢:

4.1處理數據的方式:直接記錄快照,而非差異比較

Git 更像是把數據看作是對小型文件系統的一組快照。 每次提交更新,或在 Git 中保存項目狀態時,它主要對當時的全部文件製作一個快照並保存這個快照的索引。 爲了高效,如果文件沒有修改,Git 不再重新存儲該文件,而是隻保留一個鏈接指向之前存儲的文件。 Git 對待數據更像是一個快照流。如下圖所示:

 4.2 離線操作:近乎所有操作都是本地執行

4.3 Git 保證完整性

Git 中所有數據在存儲前都計算校驗和,然後以校驗和來引用。 這意味着不可能在 Git 不知情時更改任何文件內容或目錄內容。 這個功能建構在 Git 底層,是構成 Git 哲學不可或缺的部分。 若你在傳送過程中丟失信息或損壞文件,Git 就能發現。

Git 用以計算校驗和的機制叫做 SHA-1 散列(hash,哈希)。 這是一個由 40 個十六進制字符(0-9 和 a-f)組成字符串,基於 Git 中文件的內容或目錄結構計算出來。 SHA-1 哈希看起來是這樣:

24b9da6552252987aa493b52f8696cd6d3b0037

Git 中使用這種哈希值的情況很多。實際上,Git 數據庫中保存的信息都是以文件內容的哈希值來索引,而不是文件名。

4.4 Git 一般只添加數據

5.Git操作的三種狀態

Git 有三種狀態,你的文件可能處於其中之一:已提交(committed)、已修改(modified)和已暫存(staged)。 已提交表示數據已經安全的保存在本地數據庫中。 已修改表示修改了文件,但還沒保存到數據庫中。 已暫存表示對一個已修改文件的當前版本做了標記,使之包含在下次提交的快照中。

由此引入 Git 項目的三個工作區域的概念:Git 倉庫、工作目錄以及暫存區域。工作目錄、暫存區域以及 Git 倉庫如下圖所示:

Git 倉庫目錄是 Git 用來保存項目的元數據和對象數據庫的地方。 這是 Git 中最重要的部分,從其它計算機克隆倉庫時,拷貝的就是這裏的數據。

工作目錄是對項目的某個版本獨立提取出來的內容。 這些從 Git 倉庫的壓縮數據庫中提取出來的文件,放在磁盤上供你使用或修改。

暫存區域是一個文件,保存了下次將提交的文件列表信息,一般在 Git 倉庫目錄中。 有時候也被稱作‘索引’,不過一般說法還是叫暫存區域。

基本的 Git 工作流程如下:

  • 在工作目錄中修改文件。
  • 暫存文件,將文件的快照放入暫存區域。
  • 提交更新,找到暫存區域的文件,將快照永久性存儲到 Git 倉庫目錄。

如果 Git 目錄中保存着的特定版本文件,就屬於已提交狀態。 如果作了修改並已放入暫存區域,就屬於已暫存狀態。 如果自上次取出後,作了修改但還沒有放到暫存區域,就是已修改狀態。當然,你也可以直接跳過暫存提交。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章