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位長度的值。
上一篇:
git status命令
下一篇:
git commit命令