reset 三兄弟差别只在「改动去哪」。hard 最危险,会连工作区一起删。

实践流程

git reset --soft  HEAD~1   # 留改动在暂存区
git reset --mixed HEAD~1   # 留改动在工作区(默认)
git reset --hard HEAD~1    # 改动全丢掉

# 已推送的回退用 revert 更安全
git revert <commit>

要点速览

  • soft 只动指针,改动还在暂存区,适合改提交信息。
  • mixed 是默认,改动退回工作区未暂存。
  • hard 彻底丢弃,已推送的提交别用 reset,改 revert。
reset --hard 是破坏性操作,动之前先 git stash 或确认无损失。