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