git 是什么?
Git 誕生于 2005 年,是一款免費(fèi)、開源、分布式版本控制系統(tǒng)。
直接記錄快照,而非差異比較
Git 和其它版本控制系統(tǒng)的主要差別在于 Git 對(duì)待數(shù)據(jù)的方式。
其它大部分系統(tǒng)以文件變更列表的方式存儲(chǔ)信息,這類系統(tǒng)(CVS、Subversion等)將它們存儲(chǔ)的信息看作是一組基本文件和每個(gè)文件隨時(shí)間逐步累積的差異
(基于差異的版本控制)。

Git 不按照以上方式對(duì)待或保存數(shù)據(jù)。反之,Git 更像是把數(shù)據(jù)看作是對(duì)小型文件系統(tǒng)的一系列快照。
在 Git中,每當(dāng)你提交更新或保存項(xiàng)目狀態(tài)時(shí),它基本上就會(huì)對(duì)當(dāng)時(shí)的全部文件創(chuàng)建一個(gè)快照并保存這個(gè)快照的索引。為了效率,如果文件沒有修改,Git
不再重新存儲(chǔ)該文件,而是只保留一個(gè)鏈接指向之前存儲(chǔ)的文件。Git 對(duì)待數(shù)據(jù)更像是一個(gè)快照流。

這是 Git 與幾乎所有其它版本控制系統(tǒng)的重要區(qū)別。
近乎所有操作都是本地執(zhí)行
在 Git 中的絕大多數(shù)操作都只需要訪問本地文件和資源,一般不需要來自網(wǎng)絡(luò)上其它計(jì)算機(jī)的信息。
如果你習(xí)慣于所有操作都有網(wǎng)絡(luò)延時(shí)開銷的集中式版本控制系統(tǒng),Git 在這方面會(huì)讓你感到速度之神賜給了 Git
超凡的能量。因?yàn)槟阍诒镜卮疟P上就有項(xiàng)目的完整歷史,所以大部分操作看起來瞬間完成。
Git 保證完整性
Git 中所有的數(shù)據(jù)在存儲(chǔ)前都計(jì)算校驗(yàn)和,然后以校驗(yàn)和來引用。
Git 用以計(jì)算校驗(yàn)和的機(jī)制叫做 SHA-1 散列(hash,哈希)。這是一個(gè)由 40 個(gè)十六進(jìn)制字符(0-9 和 a-f)組成的字符串,基于 Git
中文件的內(nèi)容或目錄結(jié)構(gòu)計(jì)算出來。SHA-1 哈希看起來是這樣:
24b9da6552252987aa493b52f8696cd6d3b00373
Git 中使用這種哈希值的情況很多,你將經(jīng)常看到這種哈希值。實(shí)際上,Git 數(shù)據(jù)庫中保存的信息都是以文件內(nèi)容的哈希值來索引,而不是文件名。
Git 一般只添加數(shù)據(jù)
你執(zhí)行的 Git 操作,幾乎只往 Git 數(shù)據(jù)庫中添加數(shù)據(jù)。你很難使用 Git 從數(shù)據(jù)庫中刪除數(shù)據(jù),也就是說 Git
幾乎不會(huì)執(zhí)行任何可能導(dǎo)致文件不可恢復(fù)的操作。
同別的 VCS 一樣,未提交更新時(shí)有可能丟失或弄亂修改的內(nèi)容。但是一旦你提交快照到 Git 中,
就難以再丟失數(shù)據(jù),特別是如果你定期的推送數(shù)據(jù)庫到其它倉庫的話。
三種狀態(tài)
Git 有三種狀態(tài),你的文件可能處于其中之一:已提交(committed)、已修改(modified) 和 已暫存(staged)
已修改表示修改了文件,但還沒保存到數(shù)據(jù)庫中。
已暫存表示對(duì)一個(gè)已修改文件的當(dāng)前版本做了標(biāo)記,使之包含在下次提交的快照中。
已提交表示數(shù)據(jù)已經(jīng)安全地保存在本地?cái)?shù)據(jù)庫中。
這會(huì)讓我們的 Git 項(xiàng)目擁有三個(gè)階段:工作區(qū)、暫存區(qū)以及 Git 目錄。

工作區(qū)是對(duì)項(xiàng)目的某個(gè)版本獨(dú)立提取出來的內(nèi)容。這些從 Git 倉庫的壓縮數(shù)據(jù)庫中提取出來的文件,放在磁盤上供你使用或修改。
暫存區(qū)是一個(gè)文件,保存了下次將要提交的文件列表信息,一般在 Git 倉庫目錄中。按照 Git
的術(shù)語叫做“索引”,不過一般說法還是叫“暫存區(qū)”。
Git 倉庫目錄是 Git 用來保存項(xiàng)目的元數(shù)據(jù)和對(duì)象數(shù)據(jù)庫的地方。這是 Git
中最重要的部分,從其它計(jì)算機(jī)克隆倉庫時(shí),復(fù)制的就是這里的數(shù)據(jù)。
基本的 Git 工作流程如下:
在工作區(qū)中修改文件。
將你想要下次提交的更改選擇性地暫存,這樣只會(huì)將更改的部分添加到暫存區(qū)。
提交更新,找到暫存區(qū)的文件,將快照永久性存儲(chǔ)到 Git 目錄。
-
控制系統(tǒng)
+關(guān)注
關(guān)注
41文章
6952瀏覽量
114087 -
數(shù)據(jù)
+關(guān)注
關(guān)注
8文章
7335瀏覽量
94757 -
Git
+關(guān)注
關(guān)注
0文章
207瀏覽量
16930
發(fā)布評(píng)論請(qǐng)先 登錄
Git常用的超級(jí)實(shí)用命令
git命令的基本使用
騰訊是如何使用Git?
Git的參考手冊(cè)教程免費(fèi)下載
git 總結(jié)
利用Learn Git Branching輕松學(xué)習(xí)Git
git rebase與相關(guān)git merge命令比較
git rebase和git merge的區(qū)別
Git命令的綜合手冊(cè)怎么找
git基本操作命令用法
Git中最常用的命令介紹
Git是什么 Git介紹
評(píng)論