Git 是一款免費(fèi)、開源的分布式版本控制系統(tǒng),用于敏捷高效地處理任何或小或大的項(xiàng)目。
三種狀態(tài)(states)
在 Git 里,文件有三種狀態(tài):已提交的(committed)、已修改的(modified)和暫存的(staged)。已提交的(committed)表示文件數(shù)據(jù)已安全地保存在你的本地?cái)?shù)據(jù)里。已修改的(modified)表示你對(duì)文件做了修改, 但是還沒有提交到你的數(shù)據(jù)庫。暫存的(staged)表示你對(duì)當(dāng)前版本內(nèi)的已修改文件做了標(biāo)記,但還沒有提交。
這三種狀態(tài)將 Git 項(xiàng)目分成了三個(gè)主要部分:Git 目錄(Git directory)、工作目錄(working directory)和暫存區(qū)(staging area)。

Git 目錄(Git directory)是保存項(xiàng)目的元數(shù)據(jù)和基本數(shù)據(jù)的地方。這是 Git 最重要的部分,當(dāng)你從另外一臺(tái)電腦 clone 了一個(gè)倉庫(repository)到你的電腦,實(shí)際上,你復(fù)制的就是Git 目錄(Git directory)。
工作目錄(working directory)是某一版本項(xiàng)目的檢出(checkout)。這些文件是從Git 目錄(Git directory)中的壓縮數(shù)據(jù)里拉(pull out)出來的,放在你的硬盤上供你查看和修改。
暫存區(qū)(staging area)是一個(gè)文件,保存在你的Git 目錄(Git directory)里,存儲(chǔ)著你下一次將要提交的信息。有時(shí)也稱它為 "index",但是暫存區(qū)(staging area)更通用。
基本的 Git 工作流程是這樣的:
- 你在你的當(dāng)前工作目錄(working directory)里修改了文件。
- 你暫存了文件,添加它們的快照(snapshot)到你的暫存區(qū)(staging area)。
- 你做了一個(gè)提交的動(dòng)作,將暫存區(qū)(staging area)中記錄的文件快照永久地保存到Git 目錄(Git directory)。
注:Git 中的快照的意思,就是當(dāng)前文件的內(nèi)容,最終記錄的是文件版本之間的差異。
如果某一版本的文件記錄在Git 目錄(Git directory)中,它被認(rèn)為是已提交的(committed)。如果一個(gè)文件被修改,添加到了暫存區(qū)(staging area),它是暫存的(staged)。如果該文件自上次檢出后有改動(dòng),但是沒有暫存,它是已修改的(modified)。