Git Revert Commit
大约 2 分钟
git 撤回 commit 的几种方式
git revert 命令
如果你已经将提交推送到远程仓库,并且不想更改提交历史,可以使用 git revert 命令。这会创建一个新的提交,用来撤销指定提交的更改,而不会更改提交历史。
git revert <commit-hash>
适用情况:当提交已经推送到共享分支(如 main、master),不想改变提交历史,只是想撤销某个错误的提交。
git reset 命令
git reset 主要用于操作回退暂存区和工作区的提交,它也可以配合其它命令来操作回退已将提交到远程分支的内容,但是这是危险的操作,不推荐。
git reset --hard
重置 HEAD、暂存区和工作区到指定的提交。所有更改都会被丢弃,工作区将恢复到指定提交时的状态。
git reset --hard 会将暂存区和工作区全部重置,除非是你确信暂存区和工作区的内容都不需要了,否则请谨慎使用该命令。
git reset --hard <commit-hash>
git reset --mixed
重置 HEAD 到指定的提交,同时将暂存区的更改移除,但保留工作区的更改。
git reset --mixed <commit-hash>
执行该命令时,参数 --mixed
可以省略,因为这是默认行为。
git reset --soft
仅重置 HEAD 到指定的提交,保留暂存区和工作区的更改。当你想撤销提交,但保留文件更改,并且还要保留暂存区中的内容以便之后修改或重新提交时。
git reset --soft <commit-hash>
git reset --merge
当正在执行一个合并(merge)操作时,使用 --merge 会取消合并过程并恢复工作区的状态。它不会重置已经暂存的更改。
它常被用到合并失败的情况,终止当前合并并回复到合并开始时的状态。
git reset --merge