跳轉至

建立 2024-01-01 更新 2026-09-15

git revert

想「撤銷某次提交的效果」、但保留歷史時用 git revert:它會再產生一個新的 commit,把指定那次的變更反過來。已經推到 GitHub、別人可能已拉取的分支,優先用 revert 而不是 reset --hard。

完整還原選項對照見 復原修改。

使用 git revert

git revert <commit-hash>

例如:

git revert a1b2c3d

Git 會開啟編輯器讓你確認訊息,然後新增一筆「Revert ...」提交。

git reset(謹慎使用)

git reset 把目前分支的指標移回舊提交,等於改寫「這條分支現在指到哪裡」。

git reset --soft <commit-hash>   # 保留暫存區與工作區
git reset --mixed <commit-hash>  # 預設:清暫存、留工作區
git reset --hard <commit-hash>   # 三區都回到該提交,未提交修改會消失

只適合用在尚未 push、只有你自己在用的提交。對共用的 main 使用 --hard 很容易害同事衝突。

快速比較

指令 作用
git revert 新增 commit 抵銷舊變更,歷史仍在
git reset 移動分支指標;--hard 會丟掉未提交的修改