Git 怎么撤销 commit?

提交了但发现有问题,想撤销最后一次或多次 commit

解决方案

撤销提交,保留修改在暂存区 推荐

git reset --soft HEAD~1

HEAD 回退一个提交,但所有变更保留在暂存区。适合「提交了但想改一下再重新提交」的场景。

适用场景:想修改提交内容或信息,变更还需要

撤销提交,修改回到工作区(未暂存)

git reset HEAD~1

等价于 --mixed。提交撤销,变更回到工作区未暂存状态。适合想重新选择要暂存的文件。

适用场景:想重新组织哪些文件进入下一次提交

彻底丢弃提交和所有修改

git reset --hard HEAD~1

提交和所有变更全部丢失,不可恢复(除非用 reflog)。

适用场景:确定不需要这些修改了

只修改提交信息

git commit --amend -m "新的提交信息"

不撤销提交,只修改最后一次提交的信息。

适用场景:提交内容没问题,只是信息写错了

安全撤销已推送的提交

git revert HEAD

创建一个新提交来撤销指定提交的变更。不改变历史,适合已推送到远程的提交。

适用场景:提交已经推送到远程,不能改历史

注意事项

--hard 会丢失所有未提交的修改,执行前确认
已推送的提交用 revert 而不是 reset
reset 后如果需要推送,必须 force push

相关命令