git 是什么?
Git 誕生于 2005 年,是一款免費、開源、分布式版本控制系統。
直接記錄快照,而非差異比較
Git 和其它版本控制系統的主要差別在于 Git 對待數據的方式。
其它大部分系統以文件變更列表的方式存儲信息,這類系統(CVS、Subversion等)將它們存儲的信息看作是一組基本文件和每個文件隨時間逐步累積的差異
(基于差異的版本控制)。
Git 不按照以上方式對待或保存數據。反之,Git 更像是把數據看作是對小型文件系統的一系列快照。
在 Git中,每當你提交更新或保存項目狀態時,它基本上就會對當時的全部文件創建一個快照并保存這個快照的索引。為了效率,如果文件沒有修改,Git
不再重新存儲該文件,而是只保留一個鏈接指向之前存儲的文件。Git 對待數據更像是一個快照流。
這是 Git 與幾乎所有其它版本控制系統的重要區別。
近乎所有操作都是本地執行
在 Git 中的絕大多數操作都只需要訪問本地文件和資源,一般不需要來自網絡上其它計算機的信息。
如果你習慣于所有操作都有網絡延時開銷的集中式版本控制系統,Git 在這方面會讓你感到速度之神賜給了 Git
超凡的能量。因為你在本地磁盤上就有項目的完整歷史,所以大部分操作看起來瞬間完成。
Git 保證完整性
Git 中所有的數據在存儲前都計算校驗和,然后以校驗和來引用。
Git 用以計算校驗和的機制叫做 SHA-1 散列(hash,哈希)。這是一個由 40 個十六進制字符(0-9 和 a-f)組成的字符串,基于 Git
中文件的內容或目錄結構計算出來。SHA-1 哈希看起來是這樣:
24b9da6552252987aa493b52f8696cd6d3b00373
Git 中使用這種哈希值的情況很多,你將經常看到這種哈希值。實際上,Git 數據庫中保存的信息都是以文件內容的哈希值來索引,而不是文件名。
Git 一般只添加數據
你執行的 Git 操作,幾乎只往 Git 數據庫中添加數據。你很難使用 Git 從數據庫中刪除數據,也就是說 Git
幾乎不會執行任何可能導致文件不可恢復的操作。
同別的 VCS 一樣,未提交更新時有可能丟失或弄亂修改的內容。但是一旦你提交快照到 Git 中,
就難以再丟失數據,特別是如果你定期的推送數據庫到其它倉庫的話。
三種狀態
Git 有三種狀態,你的文件可能處于其中之一:已提交(committed)、已修改(modified) 和 已暫存(staged)
已修改表示修改了文件,但還沒保存到數據庫中。
已暫存表示對一個已修改文件的當前版本做了標記,使之包含在下次提交的快照中。
已提交表示數據已經安全地保存在本地數據庫中。
這會讓我們的 Git 項目擁有三個階段:工作區、暫存區以及 Git 目錄。
工作區是對項目的某個版本獨立提取出來的內容。這些從 Git 倉庫的壓縮數據庫中提取出來的文件,放在磁盤上供你使用或修改。
暫存區是一個文件,保存了下次將要提交的文件列表信息,一般在 Git 倉庫目錄中。按照 Git
的術語叫做“索引”,不過一般說法還是叫“暫存區”。
Git 倉庫目錄是 Git 用來保存項目的元數據和對象數據庫的地方。這是 Git
中最重要的部分,從其它計算機克隆倉庫時,復制的就是這里的數據。
基本的 Git 工作流程如下:
在工作區中修改文件。
將你想要下次提交的更改選擇性地暫存,這樣只會將更改的部分添加到暫存區。
提交更新,找到暫存區的文件,將快照永久性存儲到 Git 目錄。
-
控制系統
+關注
關注
41文章
6604瀏覽量
110576 -
數據
+關注
關注
8文章
7002瀏覽量
88943 -
Git
+關注
關注
0文章
198瀏覽量
15755
發布評論請先 登錄
相關推薦
評論