git config命令
git help命令
git init命令
git add命令
git clone命令
git status命令
git diff命令
git commit命令
git reset命令
git rm命令
git mv命令
git branch命令
git checkout命令
git merge命令
git mergetool命令
git log命令
git stash命令
git tag命令
git fetch命令
git pull命令
git push命令
git remote命令
git submodule命令
git show命令
git shortlog命令
git describe命令
git rebase命令
git diff命令
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位長度的值。