Git撤销提交操作
时间:2026-10-18 07:29 作者:emer 分类: 无
Git撤销提交操作
引言
提交错了、提交了不该上传的文件、commit message写错,都是日常开发常见情况。Git提供多种撤销方式,关键是分清:还没push的本地提交和已经推到远程的提交,处理方式完全不同。
场景一:改错还没add
工作区改动想放弃:
git checkout -- 文件名 #旧写法
git restore 文件名 #新写法
整个工作区全部还原:git restore .
场景二:add了但没commit
把文件撤出暂存区,保留改动:
git reset HEAD 文件名
git restore --staged 文件名
场景三:commit了但没push
改最后一次提交信息:
git commit --amend -m "新的提交说明"
撤销最近一次提交,改动留在工作区:
git reset --soft HEAD^ #撤销提交,代码保留在暂存区
git reset --mixed HEAD^ #默认,撤销提交,代码退回工作区
git reset --hard HEAD^ #撤销提交并丢弃改动,慎用
场景四:已经push到远程
本地reset后强推会改写历史,团队共用分支风险大,推荐用反向提交:
git revert 提交ID
revert会生成一个新提交,把那次改动反向抵消,不改写历史,安全协作。
注意事项
- --hard会丢代码,操作前先备份或开分支;
- 已push到共享分支不要随意reset强推;
- amend只用于未推送的本地提交;
- 查看历史用git log --oneline定位提交ID。
总结
未add用restore,add未commit用reset HEAD撤出,本地commit用reset(soft/mixed保留代码,hard丢弃),已push用revert新增反向提交。记住本地和远程的区别,避免改写团队历史。