1. 程式人生 > >筆記-讀官方Git教程(1)~認識Git

筆記-讀官方Git教程(1)~認識Git

分系統 存儲信息 時間 data- CA 本地 pan ddl ide

小書匠 版本管理

教程內容基本來自git官方教程,認真都了系列的文章,然後對一些重點的記錄下來,做了簡單的歸納並寫上自己的思考.

目錄:

  • 1.Git介紹
  • 2.Git版本控制原理
  • 3.Git特點
  • 4.Git中文件的三種狀態

1.Git介紹

版本控制是一種記錄一個或若幹文件內容變化,以便將來查閱特定版本修訂情況的系統。

采用版本控制系統(VCS)是個明智的選擇。 有了它你就可以將某個文件回溯到之前的狀態,甚至將整個項目都回退到過去某個時間點的狀態; 你可以比較文件的變化細節,查出最後是誰修改了哪個地方,從而找出導致怪異問題出現的原因; 又是誰在何時報告了某個功能缺陷等等。 使用版本控制系統通常還意味著,就算你亂來一氣把整個項目中的文件改的改刪的刪,你也照樣可以輕松恢復到原先的樣子。 但額外增加的工作量卻微乎其微。

2.Git版本控制原理

Git 和其它版本控制系統(包括 Subversion 和近似工具)的主要差別在於 Git 對待數據的方法。概念上來區分,其它大部分系統以文件變更列表的方式存儲信息。下圖是一般CSV的設計原理:

技術分享圖片
其他版本控制的原理

存儲的是每個文件與初始版本的差異,即每個版本相當於以增量的方式存儲當前版本與初始版本的差異.

技術分享圖片
Git版本控制原理

Git不采用這種方式,而是是把數據看作是對小型文件系統的一組快照。 每次你提交更新,或在 Git 中保存項目狀態時,它主要對當時的全部文件制作一個快照並保存這個快照的索引。Git 對待數據更像是一個 快照流

3.Git特點

3.1本地操作
在 Git 中的絕大多數操作都只需要訪問本地文件和資源,一般不需要來自網絡上其它計算機的信息。

舉個例子,要瀏覽項目的歷史,Git 不需外連到服務器去獲取歷史,然後再顯示出來——它只需直接從本地數據庫中讀取。 你能立即看到項目歷史。 如果你想查看當前版本與一個月前的版本之間引入的修改,Git 會查找到一個月前的文件做一次本地的差異計算,而不是由遠程服務器處理或從遠程服務器拉回舊版本文件再來本地處理。

3.2數據完整性
Git 數據庫中保存的信息都是以文件內容的哈希值來索引,而不是文件名。這意味著不可能在 Git 不知情時更改任何文件內容或目錄內容。同時, 若你在傳送過程中丟失信息或損壞文件,Git 就能發現。

3.3一般只添加數據
你執行的 Git 操作,幾乎只往 Git 數據庫中增加數據。 很難讓 Git 執行任何不可逆操作,或者讓它以任何方式清除數據。

4.Git中文件的三種狀態

Git 有三種狀態,你的文件可能處於其中之一:

a.已提交(committed) 已提交表示數據已經安全的保存在本地數據庫中。
b.已修改(modified) 已修改表示修改了文件,但還沒保存到數據庫中。
c.已暫存(staged) 已暫存表示對一個已修改文件的當前版本做了標記,使之包含在下次提交的快照中。

技術分享圖片
工作目錄、暫存區域以及 Git 倉庫

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

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

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

基本的 Git 工作流程如下:

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

如果 Git 目錄中保存著的特定版本文件,就屬於已提交狀態。 如果作了修改並已放入暫存區域,就屬於已暫存狀態。 如果自上次取出後,作了修改但還沒有放到暫存區域,就是已修改狀態。

筆記-讀官方Git教程(1)~認識Git