使用git status命令可以查看文件的狀態(tài)。但是,顯示出來的文件信息并不是特別詳細。我們想要查看更加詳細的文件狀態(tài)信息,可以使用命令git diff。
git diff命令可以幫助我們得知當前做的哪些更新還沒有暫存?有哪些更新已經暫存起來準備好了下次提交? git diff 會使用文件補丁的格式顯示具體添加和刪除的行。
我們修改test.txt文件之后,保存。然后運行命令 git status.

這里的test.txt沒有被加入到跟蹤區(qū)域,顯示為紅色已經修改的狀態(tài)。系統(tǒng)提示我們要先添加到暫存區(qū)才能提交。
接下來,我們運行git diff 命令。

此時,我們發(fā)現(xiàn),diff命令給我們列出了我們這一次修改的文件名,文件內容。
注意,注意,注意
git diff
此命令比較的是工作目錄中 當前文件 和 暫存區(qū)域快照 之間的差異,也就是修改之后還沒有暫存起來的變化內容。
若要看已經暫存起來的文件和上次提交時的快照之間的差異,可以用 git diff --cached 命令。(Git 1.6.1 及更高版本還允許使用 git diff --staged,效果是相同的,但更好記些。)來看看實際的效果。
我們先不暫存該文件,執(zhí)行命令看看。

發(fā)現(xiàn)沒有任何輸出。因為現(xiàn)在沒有任何暫存文件。
我們執(zhí)行命令add,把test.txt添加到暫存區(qū)域。

然后再次執(zhí)行git diff --cached命令,輸出結果如下:

現(xiàn)在 test.txt已經添加到了暫存區(qū),該命令比較的是暫存區(qū)和上一次提交快照之間的差異。上一次提交的快照中并沒有添加
2017-11-10 添加
這句話。
git diff --cached 列出了暫存區(qū)的文件和上一次提交的文件之間的變化。
我們再次編輯test.txt文件,再添加一行:
123456
使用命令 git status看看結果:

我們看到了暫存前后的兩個版本。
運行命令git diff --cached,輸出結果:

并沒有發(fā)現(xiàn)新添加的一行
123456
這是為什么呢?
前面已經講過了,git diff --cached 是比較已經暫存區(qū)域和上一次提交的文件變化。這一次的改變并沒有被添加到跟蹤,所以看不到新的文件內容。
我們再次執(zhí)行命令add

重新執(zhí)行 git diff --cached 命令:

現(xiàn)在就可以看到了本次修改的內容了。
總結:
1、每修改一次文件,要想比較暫存區(qū)和上次提交的變化,都要執(zhí)行 add命令。
2、git status 命令是查看文件的狀態(tài)。已暫存的文件和未暫存文件都能看到狀態(tài)。但是不能看到修改的內容。
3、git diff命令可以看到文件的修改的內容。比較的是未暫存的文件的修改前后的變化。
4、git diff --cached 也可以看到文件修改的內容變化,比較的是已經暫存的文件和上次提交的變化。
大家明白了嗎?
祝開心。