ref:https://www.cnblogs.com/xuxiuxiu/p/8522594.html
工作目錄 vs 暫存區
$ git diff <filename>
意義:查看文件在工作目錄與暫存區的差別。如果還沒 add 進暫存區,則查看文件自身修改前後的差別。也可查看和另一分支的區別。
$ git diff <branch> <filename>
暫存區 vs Git倉庫
git diff --cached <filename>
意義:表示查看已經 add 進暫存區但是尚未 commit 的內容同最新一次 commit 時的內容的差異。 也可以指定倉庫版本:
git diff --cached <commit> <filename>
工作目錄 vs Git倉庫
git diff <commit> <filename>
意義:查看工作目錄同Git倉庫指定 commit 的內容的差異。 <commit>
=HEAD
時:查看工作目錄同最近一次 commit 的內容的差異。
Git倉庫 vs Git倉庫
git diff <commit> <commit>
意義:Git倉庫任意兩次 commit 之間的差別。
擴展:
以上命令可以不指定 <filename>
,則對全部文件操作。 以上命令涉及和 Git倉庫 對比的,均可指定 commit 的版本。
HEAD
最近一次 commitHEAD^
上次提交HEAD~100
上100次提交- 每次提交產生的哈希值
最佳實踐
準備工作:
- 新建文件 test.txt;
- 追蹤文件:git add test.txt;
- 首次提交:git commit -m "Create file test.txt"
開始測試:
1、修改文件內容,例如添加一行“000” 2、查看修改:git diff test.txt
此時由於沒有向暫存區暫存此修改,此時作用是查看工作目錄文件的修改。
3、提交一次:git commit -m "add line 000" 4、修改文件內容,例如添加一行“111” 5、暫存此次修改:git add test.txt,不作 commit 6、再次修改文件夾內容,例如添加一行“222” 7、查看修改:git diff test.txt
此時查看文件在工作目錄(222)與暫存區(111)的差別。
其它命令自行測試