git diff
命令用於顯示提交和工作樹等之間的更改。此命令比較的是工作目錄中當前檔案和暫存區域快照之間的差異,也就是修改之後還沒有暫存起來的變化內容。
簡介
git diff [options] [<commit>] [--] [<path>…?]
git diff [options] --cached [<commit>] [--] [<path>…?]
git diff [options] <commit> <commit> [--] [<path>…?]
git diff [options] <blob> <blob>
git diff [options] [--no-index] [--] <path> <path>
在工作樹和索引或樹之間顯示更改,索引和樹之間的更改,兩個樹之間的更改,兩個blob物件之間的更改或兩個檔案在磁碟上的更改。
為了防止異常情況發生,請注意,上述描述中的所有<commit>
除了使用「..
」符號的最後兩種形式之外,都可以是任何<tree>
。
以下是一些範例 -
git diff <file> # 比較當前檔案和暫存區檔案差異 git diff
git diff <id1><id1><id2> # 比較兩次提交之間的差異
git diff <branch1> <branch2> # 在兩個分支之間比較
git diff --staged # 比較暫存區和版本庫差異
git diff --cached # 比較暫存區和版本庫差異
git diff --stat # 僅僅比較統計資訊
1. 檢查工作樹的幾種方式
$ git diff #(1)
$ git diff --cached #(2)
$ git diff HEAD #(3)
git add
,但沒有git commit
的改動。git commit -a
」,檢視將會提交什麼。檢視尚未暫存的檔案更新了哪些部分,不加引數直接輸入 -
$ git diff
此命令比較的是工作目錄(Working tree)和暫存區域快照(index)之間的差異
也就是修改之後還沒有暫存起來的變化內容。
檢視已經暫存起來的檔案(staged)和上次提交時的快照之間(HEAD)的差異 -
$ git diff --cached
$ git diff --staged
顯示的是下一次提交時會提交到HEAD的內容(不帶-a
情況下)
顯示工作版本(Working tree)和HEAD的差別
$ git diff HEAD
直接將兩個分支上最新的提交做diff
$ git diff topic master
$ #或
$ git diff topic..master
輸出自topic
和master
分別開發以來,master
分支上的變更。
$ git diff topic...master
檢視簡單的diff結果,可以加上--stat
引數
$ git diff --stat
檢視當前目錄和另外一個分支(test
)的差別
$ git diff test
顯示當前目錄和另一個叫’test
‘分支的差別
$ git diff HEAD -- ./lib
顯示當前目錄下的lib目錄和上次提交之間的差別(更準確的說是在當前分支下)
比較上次提交和上上次提交
$ git diff HEAD^ HEAD
比較兩個歷史版本之間的差異
$ git diff SHA1 SHA2
提示:SHA1,SHA2是類似 COMMIT ID 的32位元長度的值。