【Git】git revert <commit> 和 git checkout <commit> 差異

git revert <commit>git checkout <commit> 雖然都能「回到某個 commit」,但本質上用途完全不同。以下為詳細說明與比較。


一、git revert <commit>

功能說明:

特性:

使用情境:

範例:

git revert a1b2c3d

會產生一個新的 commit,把 a1b2c3d 的內容還原。


二、git checkout <commit>(或 git switch --detach <commit>

功能說明:

特性:

使用情境:

範例:

git checkout a1b2c3d
# 或推薦用法(Git 2.23+)
git switch --detach a1b2c3d

三、兩者比較表

指令 動作類型 是否建立新 commit 是否修改歷史 是否可安全推送遠端 常見用途
git revert <commit> 建立反向 commit ✅ 是 ❌ 否 ✅ 是 撤銷已推送的錯誤 commit
git checkout <commit> 切換版本 ❌ 否 ❌ 否 ⚠️ 不適合推送 detached commit 查看歷史、測試、debug

四、補充說明:若想基於某個舊 commit 建立新分支

git checkout -b new-branch a1b2c3d

這樣可以保留該版本的狀態,並在其上繼續開發,而不會讓 HEAD 處於 detached 狀態。


如果你有實際情境(例如:某個 commit 上錯 production,或想回復某功能),可以提供情況,我能幫你判斷該用 revert 還是 checkout 或其他方案。


修訂版本 #1
由 treeman 建立於 14 K 2025 10:55:52
由 treeman 更新於 14 K 2025 10:56:18