使用git status指令可以檢視檔案的狀态。但是,顯示出來的檔案資訊并不是特别詳細。我們想要檢視更加詳細的檔案狀态資訊,可以使用指令git diff。
git diff指令可以幫助我們得知目前做的哪些更新還沒有暫存?有哪些更新已經暫存起來準備好了下次送出? git diff 會使用檔案更新檔的格式顯示具體添加和删除的行。
我們修改test.txt檔案之後,儲存。然後運作指令 git status.

image.png
這裡的test.txt沒有被加入到跟蹤區域,顯示為紅色已經修改的狀态。系統提示我們要先添加到暫存區才能送出。
接下來,我們運作git diff 指令。
此時,我們發現,diff指令給我們列出了我們這一次修改的檔案名,檔案内容。
注意,注意,注意
git diff
此指令比較的是工作目錄中 目前檔案 和 暫存區域快照 之間的差異,也就是修改之後還沒有暫存起來的變化内容。
若要看已經暫存起來的檔案和上次送出時的快照之間的差異,可以用 git diff --cached 指令。(Git 1.6.1 及更高版本還允許使用 git diff --staged,效果是相同的,但更好記些。)來看看實際的效果。
我們先不暫存該檔案,執行指令看看。
發現沒有任何輸出。因為現在沒有任何暫存檔案。
我們執行指令add,把test.txt添加到暫存區域。
然後再次執行git diff --cached指令,輸出結果如下:
現在 test.txt已經添加到了暫存區,該指令比較的是暫存區和上一次送出快照之間的差異。上一次送出的快照中并沒有添加
2017-11-10 添加
這句話。
git diff --cached 列出了暫存區的檔案和上一次送出的檔案之間的變化。
我們再次編輯test.txt檔案,再添加一行:
123456
使用指令 git status看看結果:
我們看到了暫存前後的兩個版本。
運作指令git diff --cached,輸出結果:
并沒有發現新添加的一行
這是為什麼呢?
前面已經講過了,git diff --cached 是比較已經暫存區域和上一次送出的檔案變化。這一次的改變并沒有被添加到跟蹤,是以看不到新的檔案内容。
我們再次執行指令add
重新執行 git diff --cached 指令:
現在就可以看到了本次修改的内容了。
總結:
1、每修改一次檔案,要想比較暫存區和上次送出的變化,都要執行 add指令。
2、git status 指令是檢視檔案的狀态。已暫存的檔案和未暫存檔案都能看到狀态。但是不能看到修改的内容。
3、git diff指令可以看到檔案的修改的内容。比較的是未暫存的檔案的修改前後的變化。
4、git diff --cached 也可以看到檔案修改的内容變化,比較的是已經暫存的檔案和上次送出的變化。
大家明白了嗎?
祝開心。