如何回退到之前的某个提交

回退到历史提交:本地未推送用 git reset --hard <提交哈希>(彻底回到该点);已推送用 git revert 逐个反向提交保持历史不改写。只想看看旧代码用 git checkout <哈希>(游离 HEAD)。

最佳实践
Git 提交历史与版本恢复示意

看是否已推送:未推送的本地分支直接 git reset --hard <提交哈希> 回到该点(之后的提交从分支上消失);已推送的用 git revert 生成反向提交,历史前进式回退,协作者无感。

方式一:reset 回退(未推送)

git log --oneline               # 找到目标提交
git reset --hard a1b2c3d        # 回到它,之后的提交丢弃

# 想保留之后提交的改动(变成未提交状态):
git reset --soft a1b2c3d

方式二:revert 回退(已推送)

git revert a1b2c3d..HEAD        # 把从该提交之后的所有提交逐个反向
git push

历史不被改写,团队协作安全。

方式三:只是看看(不改动分支)

git checkout a1b2c3d            # 游离 HEAD,看旧代码/跑旧版本
git switch -                    # 回到之前的分支

找回 reset 掉的内容

git reflog                      # 找到回退前的提交哈希
git reset --hard <哈希>          # 原地复活

常见问题(FAQ)

Q:回退后 push 被拒?

reset 改写了已推送的历史,需要 --force-with-lease。共享分支先沟通。

Q:只想回退某个文件而不是整个仓库?

git restore --source=a1b2c3d -- 路径,其他文件不动。

Q:回退到一半发现目标选错了?

git reflog 记录了 HEAD 的每一次移动,在记录和对象仍保留时,可用于定位此前的提交位置。

参考资料

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台