如果我们想把已经push到服务器的commit回退掉,有如下几种方案:
原始方法
在分支的最新状态下,把之前的代码全部手动修改后重新commit、push
使用gir reset
- 使用git log查看提交记录
- git reset --hard xxxx。其中:
- xxx是需要 恢复到 的目标commit
- hard参数会将本地工作区的文件一并回退,如果不想回退工作区的内容可以使用 soft 参数
- git push -f 命令将回退提交到远端仓库
使用git revert
- 使用git log查看提交记录
- 使用 git revert xxx。其中:
- xxx是需要 被回退 的分支
- 然后会进入到一个vi编辑界面,我一般是直接按esc后再 :q 退出编辑模式
- 使用git push 将回退提交到远端仓库
区别
1、git reset 不会生成提交记录,git revert会生成一个 “Revert “xxx”” 的提交记录
2、使用git revert 可以对之前的git revert进行反revert