Git 回滚提交代码有几种方式,具体取决于你想回退的是哪种内容,以及是否**已经推送到远程仓库。
场景一:本地提交未推送,想撤销提交
1.回退最近一次提交,但保留代码更改(即退回到 git add 状态):
2.回退最近一次提交,并撤销 git add(保留工作目录修改):
1 2 3
| git reset --mixed HEAD~1
git reset HEAD~1
|
3.回退最近一次提交,且完全删除修改(代码丢失,慎用):
场景二:已推送到远程仓库,想撤销某次提交(推荐使用 revert)
如果已经 git push,你不应该使用 reset,因为这会改变历史记录,可能影响其他协作者。使用 revert 比较安全。
1.撤销最近一次提交(生成一个新的反向提交):
2.撤销指定某个提交:
1 2
| git log --oneline git revert <commit-id>
|
场景三:强制回退远程仓库(危险操作)
1.如果你确定要强制覆盖远程仓库历史记录(如清除错误提交):
1 2
| git reset --hard <commit-id> git push -f
|
⚠️ 注意:这样做会重写远程分支历史(不会产生新的commit,回滚到特定的commit),可能导致协作冲突,务必小心。
补充命令