一、取消最近一次提交(未推送到远程仓库)
使用 git reset
- 保留工作目录、暂存区 (即只取消提交)
不变色
git
git reset --soft HEAD~1
这会将当前分支回退到上一个提交,但保留所有更改在暂存区。
- 保留工作目录 (即取消提交、暂存区)
变为红色
git
git reset --mixed HEAD~1
这会将当前分支回退到上一个提交,暂存区不会被保留。
- 文件不保留 (即取消提交、暂存区、删除文件)
文件丢失
git
git reset --hard HEAD~1
这会将当前分支回退到上一个提交,并且丢弃工作目录中的所有更改。
二、取消已经推送到远程仓库的提交
如果你已经将提交推送到远程仓库,需要更加小心,因为这可能影响其他开发者。以下是一些常用方法:
- 使用 git revert
git revert
会创建一个新的提交,撤销指定的提交。这是一个安全的方式,不会影响提交历史。
git
git revert <commit>
这将生成一个新的提交,用于撤销指定的提交。
三、总结
- 取消本地提交 :使用
git reset
(--soft、--mixed、--hard)根据需要保留或丢弃更改。 - 取消已经推送的提交 :使用
git revert
来创建一个新的撤销提交,或者在确保不会影响其他开发者的情况下使用 git reset 结合 git push --force。