1.工作原理
1.1直接記錄快照,而不是差異比較
在前言中講過,git是使用記錄快照的方式存儲(chǔ),如下圖,不再贅述。

1.2近乎所有的操作都是在本地進(jìn)行
絕大多數(shù)情況,人們是在本地倉庫中編輯文件,文件編輯完后連接遠(yuǎn)程倉庫上傳文件。
1.3三種狀態(tài)
當(dāng)本地文件一旦有了更新了之后,git文件有三種狀態(tài):已修改(modified),已暫存(staged),已提交(committed)
已修改:本地文件做了修改,但是沒有提交到暫緩區(qū);
已暫存:本地文件做了修改,已提交到暫緩區(qū),但是還沒有上傳到遠(yuǎn)程倉庫;即對(duì)一個(gè)已經(jīng)修改的文件的當(dāng)前版本做了標(biāo)記,使之包含到下次提交的快照中。
已提交:本地文件做了修改后,已經(jīng)將文件提交到遠(yuǎn)程倉庫。
相呼應(yīng)的,git項(xiàng)目存在三個(gè)工作區(qū)域的概念:工作目錄(working directory)、暫存區(qū)域(staging area)、git倉庫(.git directory)

git倉庫目錄:用來保存的是項(xiàng)目的元數(shù)據(jù)和對(duì)象數(shù)據(jù)庫的地方。其他人clone數(shù)據(jù),就是從這里拷貝的數(shù)據(jù).
工作目錄:是對(duì)項(xiàng)目某個(gè)版本獨(dú)立提取出來的數(shù)據(jù)。供本地修改。
暫緩區(qū):是一個(gè)文件,保存在git倉庫目錄中,也叫做‘索引’,保存了下次要提交的文件列表信息。當(dāng)本地文件有更新時(shí),講某個(gè)版本的快照存放到暫緩區(qū),供下次提交使用。
2.工作流程
說了這么多,git的工作流程應(yīng)該是時(shí)候出場(chǎng)了:
1.在工作目錄中修改文件(本地磁盤)
2.提交本次版本的文件快照到暫緩區(qū)
3.將暫緩區(qū)的文件快照提交到倉庫目錄,永久性保存。

流程圖詳解說明:
1.從git的倉庫克隆一個(gè)項(xiàng)目到本地;
2.在本地目錄編輯已存在的文件/新增文件/刪除文件;
3.版本快照添加到暫存區(qū);
4.提交快照,提交之前查看更改;
5.如一切正常,更改推送到到存儲(chǔ)庫;(到此正常流程完成)
6,7.若提交有異常,如發(fā)現(xiàn)本地和遠(yuǎn)程存儲(chǔ)庫文件不一致,需要處理異常后再次提交,推送。
8.步驟2的補(bǔ)充,可以是其他人一起更改了本地庫并推送到了存儲(chǔ)庫,導(dǎo)致自己本地和遠(yuǎn)程不一致。