說明
以下命令可以不指定 <filename>
,表示對全部文件操作。 命令涉及和 Git本地倉庫對比的,均可指定 commit 的版本。
HEAD
最近一次 commitHEAD^
上次提交HEAD~100
上100次提交- commit版本是每次提交產生的哈希值
工作區 vs 暫存區
查看文件在工作目錄與暫存區的差別。如果還沒 add 進暫存區,則查看文件自身修改前后的差別。也可查看和另一分支的區別。
git diff <filename>
暫存區 vs 本地倉庫
查看已經 add 進暫存區但是尚未 commit 的內容同最新一次 commit 時的內容的差異。 也可以指定倉庫版本
git diff --cached <filename>
工作區 vs 本地倉庫
git diff <commit> <filename>
查看工作區同本地倉庫指定 commit 的內容的差異。
<commit>
=HEAD
時:查看工作目錄同最近一次 commit 的內容的差異。
git diff HEAD^ <文件名>
則顯示上一次提交之前工作目錄與git倉庫之間的差異。所以我們在git pull后,可以通過git diff HEAD^
來查看拉下來的文件有那些具體的修改。
Git本地倉庫 vs Git本地倉庫
Git倉庫任意兩次 commit 之間的差別。
git diff <commit> <commit>
分支 vs 分支
#顯示出所有有差異的文件的詳細差異
git diff <branchA> <branchB>
#比較當前分支時可省略
git diff <目標分支>
# 比較A分支中有B分支沒有的提交記錄
git log branchA ^branchB
#顯示出branch1和branch2中差異的部分
git diff branch1 branch2 --stat
#生成一個.diff文件記錄所有差異
git diff [branchA] [branchB] >>d:/diff/exportname.diff