git revert
想「撤銷某次提交的效果」、但保留歷史時用 git revert:它會再產生一個新的 commit,把指定那次的變更反過來。已經推到 GitHub、別人可能已拉取的分支,優先用 revert 而不是 reset --hard。
完整還原選項對照見 復原修改。
使用 git revert
例如:
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 會丟掉未提交的修改 |