Git 怎么回退到某个版本?

代码出了问题,想回到之前某个正常的版本

解决方案

查看历史找到目标提交 推荐

# 查看提交历史
git log --oneline -20

# 输出示例:
# abc1234 feat: 添加支付功能
# def5678 fix: 修复登录bug  ← 想回到这里
# ghi9012 refactor: 重构用户模块

先找到想回退到的提交 hash。

适用场景:第一步:确定目标

临时查看旧版本(不修改历史) 推荐

git checkout def5678

进入 detached HEAD 状态查看旧版本。用 git switch - 回到原分支。

适用场景:只想看看旧版本的代码,不想改任何东西

回退并保留修改记录(推荐) 推荐

git revert abc1234

创建新提交来撤销 abc1234 的变更。历史不变,安全。

适用场景:已推送到远程,需要安全回退

强制回退(改变历史)

git reset --hard def5678
git push --force-with-lease

HEAD 直接移到目标提交,之后的提交全部丢失。需要 force push。

适用场景:本地分支或个人分支,确定不需要后续提交

注意事项

reset --hard 会丢失目标提交之后的所有变更
对公共分支用 revert 而不是 reset
force push 前确认没有其他人基于这些提交工作

相关命令