天天看點

Git學習第七課 檢視已暫存和未暫存的更新(git diff)

使用git status指令可以檢視檔案的狀态。但是,顯示出來的檔案資訊并不是特别詳細。我們想要檢視更加詳細的檔案狀态資訊,可以使用指令git diff。

git diff指令可以幫助我們得知目前做的哪些更新還沒有暫存?有哪些更新已經暫存起來準備好了下次送出? git diff 會使用檔案更新檔的格式顯示具體添加和删除的行。

我們修改test.txt檔案之後,儲存。然後運作指令 git status.

Git學習第七課 檢視已暫存和未暫存的更新(git diff)

image.png

這裡的test.txt沒有被加入到跟蹤區域,顯示為紅色已經修改的狀态。系統提示我們要先添加到暫存區才能送出。

接下來,我們運作git diff 指令。

Git學習第七課 檢視已暫存和未暫存的更新(git diff)

此時,我們發現,diff指令給我們列出了我們這一次修改的檔案名,檔案内容。

注意,注意,注意

git diff

此指令比較的是工作目錄中 目前檔案 和 暫存區域快照 之間的差異,也就是修改之後還沒有暫存起來的變化内容。

若要看已經暫存起來的檔案和上次送出時的快照之間的差異,可以用 git diff --cached 指令。(Git 1.6.1 及更高版本還允許使用 git diff --staged,效果是相同的,但更好記些。)來看看實際的效果。

我們先不暫存該檔案,執行指令看看。

Git學習第七課 檢視已暫存和未暫存的更新(git diff)

發現沒有任何輸出。因為現在沒有任何暫存檔案。

我們執行指令add,把test.txt添加到暫存區域。

Git學習第七課 檢視已暫存和未暫存的更新(git diff)

然後再次執行git diff --cached指令,輸出結果如下:

Git學習第七課 檢視已暫存和未暫存的更新(git diff)

現在 test.txt已經添加到了暫存區,該指令比較的是暫存區和上一次送出快照之間的差異。上一次送出的快照中并沒有添加

2017-11-10 添加

這句話。

git diff --cached 列出了暫存區的檔案和上一次送出的檔案之間的變化。

我們再次編輯test.txt檔案,再添加一行:

123456

使用指令 git status看看結果:

Git學習第七課 檢視已暫存和未暫存的更新(git diff)

我們看到了暫存前後的兩個版本。

運作指令git diff --cached,輸出結果:

Git學習第七課 檢視已暫存和未暫存的更新(git diff)

并沒有發現新添加的一行

這是為什麼呢?

前面已經講過了,git diff --cached 是比較已經暫存區域和上一次送出的檔案變化。這一次的改變并沒有被添加到跟蹤,是以看不到新的檔案内容。

我們再次執行指令add

Git學習第七課 檢視已暫存和未暫存的更新(git diff)

重新執行 git diff --cached 指令:

Git學習第七課 檢視已暫存和未暫存的更新(git diff)

現在就可以看到了本次修改的内容了。

總結:

1、每修改一次檔案,要想比較暫存區和上次送出的變化,都要執行 add指令。

2、git status 指令是檢視檔案的狀态。已暫存的檔案和未暫存檔案都能看到狀态。但是不能看到修改的内容。

3、git diff指令可以看到檔案的修改的内容。比較的是未暫存的檔案的修改前後的變化。

4、git diff --cached 也可以看到檔案修改的内容變化,比較的是已經暫存的檔案和上次送出的變化。

大家明白了嗎?

祝開心。