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