記錄每次更新到倉(cāng)庫(kù)
工作目錄下的每一個(gè)文件都不外乎這兩種狀態(tài):已跟蹤或未跟蹤。
?已跟蹤的文件是指那些被納入了版本控制的文件,在上一次快照中有它們的記錄,在工作一段時(shí)間后,它們的狀態(tài)可能處于未修改,已修改或已放入暫存區(qū)。
工作目錄中除已跟蹤文件以外的所有其它文件都屬于未跟蹤文件,它們既不存在于上次快照的記錄中,也沒有放入暫存區(qū)。?
檢查當(dāng)前文件狀態(tài)
要查看哪些文件處于什么狀態(tài),可以用?git status?命令。
如果在克隆倉(cāng)庫(kù)后立即使用此命令,會(huì)看到類似這樣的輸出:

這說明你現(xiàn)在的工作目錄相當(dāng)干凈。所有已跟蹤文件在上次提交后都未被更改過。
此外,上面的信息還表明,當(dāng)前目錄下沒有出現(xiàn)任何處于未跟蹤狀態(tài)的新文件,否則 Git 會(huì)在這里列出來。
該命令還顯示了當(dāng)前所在分支,并告訴你這個(gè)分支同遠(yuǎn)程服務(wù)器上對(duì)應(yīng)的分支沒有偏離。 現(xiàn)在,分支名是 “master”,這是默認(rèn)的分支名。
在項(xiàng)目下創(chuàng)建一個(gè)新的 README 文件。

?如果之前并不存在這個(gè)文件,使用?git status?命令,你將看到一個(gè)新的未跟蹤文件:

在狀態(tài)報(bào)告中可以看到新建的 README 文件出現(xiàn)在?Untracked files?下面。??未跟蹤的文件意味著 Git 在之前的快照(提交)中沒有這些文件;Git 不會(huì)自動(dòng)將之納入跟蹤范圍,除非你明明白白地告訴它“我需要跟蹤該文件”,?這樣的處理讓你不必?fù)?dān)心將生成的二進(jìn)制文件或其它不想被跟蹤的文件包含進(jìn)來。
跟蹤新文件
使用命令?git add?開始跟蹤一個(gè)文件。?
所以,要跟蹤 README 文件,運(yùn)行:

此時(shí)再運(yùn)行?git status?命令,會(huì)看到 README 文件已被跟蹤,并處于暫存狀態(tài):

只要在?Changes to be committed?這行下面的,就說明是已暫存狀態(tài)。
?git add?命令使用文件或目錄的路徑作為參數(shù);如果參數(shù)是目錄的路徑,該命令將遞歸地跟蹤該目錄下的所有文件。
暫存已修改文件
修改一個(gè)已被跟蹤的文件。
修改 README 文件,然后運(yùn)行?git status?命令。

文件?README? 出現(xiàn)在?Changes not staged for commit?這行下面,說明已跟蹤文件的內(nèi)容發(fā)生了變化,但還沒有放到暫存區(qū)。
要暫存這次更新,需要運(yùn)行?git add?命令。這是個(gè)多功能命令:可以用它開始跟蹤新文件,或者把已跟蹤的文件放到暫存區(qū),還能用于合并時(shí)把有沖突的文件標(biāo)記為已解決狀態(tài)等。?
現(xiàn)在運(yùn)行?git add?將?README?? 放到暫存區(qū),然后再看看?git status?的輸出:

文件已暫存,下次提交時(shí)就會(huì)記錄到倉(cāng)庫(kù)。
此時(shí)再加條注釋, 重新編輯存盤后,再運(yùn)行?git status

?現(xiàn)在?README?文件同時(shí)出現(xiàn)在暫存區(qū)和非暫存區(qū),實(shí)際上 Git 只不過暫存了你運(yùn)行?git add?命令時(shí)的版本, 如果你現(xiàn)在提交,CONTRIBUTING.md?的版本是你最后一次運(yùn)行?git add?命令時(shí)的那個(gè)版本,而不是你運(yùn)行?git commit?時(shí),在工作目錄中的當(dāng)前版本。 所以,運(yùn)行了?git add?之后又作了修訂的文件,需要重新運(yùn)行?git add?把最新版本重新暫存起來:

狀態(tài)簡(jiǎn)覽
git status?命令的輸出十分詳細(xì),但其用語(yǔ)有些繁瑣。 如果你使用?git status -s?命令或?git status --short?命令,你將得到一種更為緊湊的格式輸出。 運(yùn)行?git status -s?,狀態(tài)報(bào)告輸出如下:

M:修改過的文件。右M 表示修改過的文件還沒放入暫存區(qū),左M 表示該文件被修改了并放入了暫存區(qū)
A:新添加到暫存區(qū)中的文件
AM:添加到暫存區(qū)中的文件被修改過還沒放入暫存
???:新添加的未跟蹤文件
提交更新
暫存區(qū)域已經(jīng)準(zhǔn)備妥當(dāng)可以提交了。 在此之前,請(qǐng)一定要確認(rèn)還有什么修改過的或新建的文件還沒有?git add?過,否則提交的時(shí)候不會(huì)記錄這些還沒暫存起來的變化。這些修改過的文件只保留在本地磁盤。 所以,每次準(zhǔn)備提交前,先用?git status?看下,是不是都已暫存起來了, 然后再運(yùn)行提交命令?git commit:
$ git commit

提交后它會(huì)告訴你,當(dāng)前是在哪個(gè)分支(master)提交的,本次提交的完整 SHA-1 校驗(yàn)和是什么(52cc71d),以及在本次提交中,有多少文件修訂過,多少行添加和刪改過。
跳過使用暫存區(qū)域
在提交的時(shí)候,給?git commit?加上?-a?選項(xiàng),Git 就會(huì)自動(dòng)把所有已經(jīng)跟蹤過的文件暫存起來一并提交,從而跳過?git add?步驟:

提交之前不再需要?git add?文件了
移除文件
要從 Git 中移除某個(gè)文件,就必須要從已跟蹤文件清單中移除(確切地說,是從暫存區(qū)域移除),然后提交。
可以用?git rm?命令完成此項(xiàng)工作,并連帶從工作目錄中刪除指定的文件,這樣以后就不會(huì)出現(xiàn)在未跟蹤文件清單中了。

想把文件從 Git 倉(cāng)庫(kù)中刪除(亦只從暫存區(qū)域移除),但仍然希望保留在當(dāng)前工作目錄中。使用?--cached?選項(xiàng):
$ git rm --cached README
