Git 比較差異與取回檔案

比較差異

比較工作目錄和索引(暫存區)

# 顯示工作目錄中的修改與暫存區(index)之間的差異
git diff

比較索引(暫存區)和檔案庫(最後一次提交)

# 顯示已加入暫存區的修改與最後一次提交之間的差異
git diff --staged
# 或
git diff --cached

比較工作目錄和檔案庫(最後一次提交)

# 顯示工作目錄的修改與最後一次提交(HEAD)之間的差異
git diff HEAD

HEAD:最新提交的指標

HEAD 是 Git 中的一個特殊指標,代表當前所在分支的最新提交(commit)。當你進行切換分支、檢查歷史版本時,HEAD 就是這些操作的基礎。

顯示 HEAD 所指向的提交

# 顯示 HEAD 所指向提交的 SHA-1 哈希值
git rev-parse HEAD

移動 HEAD

# 切換到指定分支
git checkout branch_name

# 切換到特定提交
git checkout commit_sha

注意:使用 git checkout commit_sha 切換到特定提交會進入 detached HEAD 狀態,這表示你不是處於任何分支上。

檢視先前的提交

# 檢視上一個提交
git show HEAD^

# 檢視往前第 N 次提交,例如 N=3
git show HEAD~3

補充說明

  • HEAD^ 是上一個父提交(對於 merge commit 可能有多個 parent)。
  • HEAD~N 表示從目前 HEAD 往回 N 次提交(僅適用於線性歷史)。