开发过程中,难免遇到提交代码之后想撤销提交操作,让程序回退到提交前的样子,Git版本回滚通常有两种解决方法:回退(reset)、反做(revert)。
方法一:git reset
原理: git reset的作用是修改HEAD的位置,即将HEAD指向的位置改变为之前存在的某个版本。适用场景: 如果想恢复到之前某个提交的版本,且那个版本之后提交的版本我们都不要了,就可以用这种方法。
例如当前在版本三,想回退到版本一,同时丢弃掉版本二和版本三的所有改动,可使用reset操作。在这里插入图片描述
reset之后当前版本变成版本一,同时原本版本二和版本三的提交都被清除了。
在这里插入图片描述
方法一reset的操作步骤:

  1. 使用git log查看版本号
git log

在这里插入图片描述

  1. 使用“git reset --hard 目标版本号”命令将版本回退。
    举例我要回退到9feb83df6db8b132004325ab03377b2088cba540这个提交的版本:
git reset --hard 9feb83df6db8b132004325ab03377b2088cba540

在这里插入图片描述

  1. 回退完之后可用git log再检验当前版本。
    在这里插入图片描述

  2. 使用“git push -f”提交更改:

git push -f

因为我们回退后的本地库HEAD指向的版本比远程库的要旧,此时如果用“git push”会报错。如下:
在这里插入图片描述
改为使用 git push -f 即可完成回退后的提交。
在这里插入图片描述
方法二:git revert
revert操作,适用于撤销某一版本,而保留该版本之后的其他版本提交。适用场景:例如某需求先后进行过第一、第二、第三次版本提交之后发现第二个版本有问题,需要撤销第二个版本的操作,同时保留第三次版本的提交,可使用git revert操作。
操作步骤:

  1. git log 查看之前的操作历史,找到要还原的commit,例如。
    在这里插入图片描述

  2. 执行git revert -n命令即可恢复某次提交
    在这里插入图片描述

  3. 注意:如果撤销的是merge操作则需要提供 -m 参数,-m选项后面应该跟着一个数字,表示要撤销的提交的父提交的索引。通常情况下,使用-m 1表示选择第一个父提交,-m 2表示选择第二个父提交,以此类推。
    例如:git revert e2fa3afa69b1021a89203c4e70d28e52c9cfd6fa -m 1

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐