Git:git diff 命令詳解

工做目錄 vs 暫存區

$ git diff <filename>

意義:查看文件在工做目錄與暫存區的差異。若是還沒 add 進暫存區,則查看文件自身修改先後的差異。也可查看和另外一分支的區別。git

$ git diff <branch> <filename>

暫存區 vs Git倉庫

git diff --cached <filename>

意義:表示查看已經 add 進暫存區可是還沒有 commit 的內容同最新一次 commit 時的內容的差別。 也能夠指定倉庫版本:bash

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 之間的差異。code

擴展:

以上命令能夠不指定 <filename>,則對所有文件操做。 以上命令涉及和 Git倉庫 對比的,都可指定 commit 的版本。it

  • HEAD 最近一次 commit
  • HEAD^  上次提交
  • HEAD~100 上100次提交
  • 每次提交產生的哈希值

最佳實踐

準備工做:class

  • 新建文件 test.txt;
  • 追蹤文件:git add test.txt;
  • 首次提交:git commit -m "Create file test.txt"

開始測試:test

一、修改文件內容,例如添加一行「000」 二、查看修改:git diff test.txt擴展

此時因爲沒有向暫存區暫存此修改,此時做用是查看工做目錄文件的修改。file

三、提交一次:git commit -m "add line 000" 四、修改文件內容,例如添加一行「111」 五、暫存這次修改:git add test.txt,不做 commit 六、再次修改文件夾內容,例如添加一行「222」 七、查看修改:git diff test.txt最佳實踐

此時查看文件在工做目錄(222)與暫存區(111)的差異。

其它命令自行測試

相關文章
相關標籤/搜索