git回滚操作
Git 回滚操作有多种方式,常见的回滚方式分为三类,适用于不同的场景:
🚧 一、修改尚未提交的内容(工作区/暂存区)
1.1 撤销工作区的修改(未 add)
git checkout – file
👉 把文件还原为最近一次提交的状态。
1.2 撤销暂存区的修改(已 add)
git reset HEAD file
👉 把文件从暂存区移回工作区。
🔙 二、撤销已经提交的内容
2.1 撤销最近的一次提交(但保留修改)
git reset – soft HEAD~1
👉 回退提交,但不清除代码,修改内容仍在暂存区。
2.2 撤销最近的一次提交(保留修改但移出暂存区)
git reset – mixed HEAD~1 # 默认方式
👉 代码仍保留在工作区,未暂存。
2.3 撤销最近的一次提交(彻底丢弃)
git reset – hard HEAD~1
⚠️ 危险操作! 修改和提交都会被删除,无法恢复(除非 reflog)。
🧭 三、回滚到某个历史版本
3.1 保留历史记录的回滚(生成一个新 commit)
git revert commit_hash
👉 不会删除历史,而是创建一个“反操作”的提交(适合公开分支)。
3.2 丢弃某次提交及之后的记录
git reset – hard commit_hash
👉 会让当前分支指针回到指定提交,慎用!
🔄 四、查看历史提交记录
git log – oneline
👉 快速查看 commit hash 和信息,方便执行 revert 或 reset。
🧯 五、误操作恢复(保险)
5.1 查看历史操作记录
git reflog
👉 查看 HEAD 变动记录,比如误用了 reset --hard 可以找回之前的 commit。
5.2 恢复误删的提交
git reset --hard <reflog中出现的commit id>
✍️ 小总结(选择策略)
目标 命令 是否保留记录 是否保留修改
撤销本地未提交 checkout/reset ❌ ✅
回退最近提交 reset ❌(危险) 可选
回退某一提交(保留历史) revert ✅ ✅
误删找回 reflog + reset ✅ ✅