git回滚提交代码方法

Git 回滚提交代码有几种方式,具体取决于你想回退的是哪种内容,以及是否**已经推送到远程仓库。


场景一:本地提交未推送,想撤销提交

1.回退最近一次提交,但保留代码更改(即退回到 git add 状态):

1
git reset --soft HEAD~1

2.回退最近一次提交,并撤销 git add(保留工作目录修改):

1
2
3
git reset --mixed HEAD~1
# 简写为
git reset HEAD~1

3.回退最近一次提交,且完全删除修改(代码丢失,慎用):

1
git reset --hard HEAD~1

场景二:已推送到远程仓库,想撤销某次提交(推荐使用 revert

如果已经 git push,你不应该使用 reset,因为这会改变历史记录,可能影响其他协作者。使用 revert 比较安全。

1.撤销最近一次提交(生成一个新的反向提交):

1
git revert HEAD

2.撤销指定某个提交:

1
2
git log --oneline   # 先查找 commit ID
git revert <commit-id>

场景三:强制回退远程仓库(危险操作)

1.如果你确定要强制覆盖远程仓库历史记录(如清除错误提交):

1
2
git reset --hard <commit-id>
git push -f

⚠️ 注意:这样做会重写远程分支历史(不会产生新的commit,回滚到特定的commit),可能导致协作冲突,务必小心。


补充命令

  • 查看提交历史(简洁模式):
1
git log --oneline
  • 撤销暂存的文件(git add 的内容):
1
git reset HEAD <file>
  • 撤销未保存的本地修改(回到上次提交状态):
1
git checkout -- <file>