git diff
命令用于顯示提交和工作樹(shù)等之間的更改。此命令比較的是工作目錄中當(dāng)前文件和暫存區(qū)域快照之間的差異,也就是修改之后還沒(méi)有暫存起來(lái)的變化內(nèi)容。
簡(jiǎn)介
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>
在工作樹(shù)和索引或樹(shù)之間顯示更改,索引和樹(shù)之間的更改,兩個(gè)樹(shù)之間的更改,兩個(gè)blob對(duì)象之間的更改或兩個(gè)文件在磁盤(pán)上的更改。
為了防止異常情況發(fā)生,請(qǐng)注意,上述描述中的所有<commit>
除了使用“..
”符號(hào)的最后兩種形式之外,都可以是任何<tree>
。
以下是一些示例 -
git diff <file> # 比較當(dāng)前文件和暫存區(qū)文件差異 git diff
git diff <id1><id1><id2> # 比較兩次提交之間的差異
git diff <branch1> <branch2> # 在兩個(gè)分支之間比較
git diff --staged # 比較暫存區(qū)和版本庫(kù)差異
git diff --cached # 比較暫存區(qū)和版本庫(kù)差異
git diff --stat # 僅僅比較統(tǒng)計(jì)信息
1. 檢查工作樹(shù)的幾種方式
$ git diff #(1)
$ git diff --cached #(2)
$ git diff HEAD #(3)
git add
,但沒(méi)有git commit
的改動(dòng)。git commit -a
”,查看將會(huì)提交什么。查看尚未暫存的文件更新了哪些部分,不加參數(shù)直接輸入 -
$ git diff
此命令比較的是工作目錄(Working tree)和暫存區(qū)域快照(index)之間的差異
也就是修改之后還沒(méi)有暫存起來(lái)的變化內(nèi)容。
查看已經(jīng)暫存起來(lái)的文件(staged)和上次提交時(shí)的快照之間(HEAD)的差異 -
$ git diff --cached
$ git diff --staged
顯示的是下一次提交時(shí)會(huì)提交到HEAD的內(nèi)容(不帶-a
情況下)
顯示工作版本(Working tree)和HEAD的差別
$ git diff HEAD
直接將兩個(gè)分支上最新的提交做diff
$ git diff topic master
$ #或
$ git diff topic..master
輸出自topic
和master
分別開(kāi)發(fā)以來(lái),master
分支上的變更。
$ git diff topic...master
查看簡(jiǎn)單的diff結(jié)果,可以加上--stat
參數(shù)
$ git diff --stat
查看當(dāng)前目錄和另外一個(gè)分支(test
)的差別
$ git diff test
顯示當(dāng)前目錄和另一個(gè)叫’test
‘分支的差別
$ git diff HEAD -- ./lib
顯示當(dāng)前目錄下的lib目錄和上次提交之間的差別(更準(zhǔn)確的說(shuō)是在當(dāng)前分支下)
比較上次提交和上上次提交
$ git diff HEAD^ HEAD
比較兩個(gè)歷史版本之間的差異
$ git diff SHA1 SHA2
提示:SHA1,SHA2是類(lèi)似 COMMIT ID 的32位長(zhǎng)度的值。