Git 是一款免費(fèi)、開(kāi)源的分布式版本控制系統(tǒng)愈污,用于敏捷高效地處理任何或小或大的項(xiàng)目拨拓。
三種狀態(tài)(states)
在 Git 里狠轻,文件有三種狀態(tài):已提交的(committed)苏遥、已修改的(modified)和暫存的(staged)饼拍。已提交的(committed)表示文件數(shù)據(jù)已安全地保存在你的本地?cái)?shù)據(jù)里。已修改的(modified)表示你對(duì)文件做了修改田炭, 但是還沒(méi)有提交到你的數(shù)據(jù)庫(kù)惕耕。暫存的(staged)表示你對(duì)當(dāng)前版本內(nèi)的已修改文件做了標(biāo)記,但還沒(méi)有提交诫肠。
這三種狀態(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è)倉(cāng)庫(kù)(repository)到你的電腦谚殊,實(shí)際上丧鸯,你復(fù)制的就是Git 目錄(Git directory)。
工作目錄(working directory)是某一版本項(xiàng)目的檢出(checkout)嫩絮。這些文件是從Git 目錄(Git directory)中的壓縮數(shù)據(jù)里拉(pull out)出來(lái)的丛肢,放在你的硬盤上供你查看和修改。
暫存區(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),但是沒(méi)有暫存寡键,它是已修改的(modified)掀泳。