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 或确认无损失。