开发过程中,难免遇到提交代码之后想撤销提交操作,让程序回退到提交前的样子,Git版本回滚通常有两种解决方法:回退(reset)、反做(revert)。
方法一:git reset
原理: git reset的作用是修改HEAD的位置,即将HEAD指向的位置改变为之前存在的某个版本。适用场景: 如果想恢复到之前某个提交的版本,且那个版本之后提交的版本我们都不要了,就可以用这种方法。
例如当前在版本三,想回退到版本一,同时丢弃掉版本二和版本三的所有改动,可使用reset操作。
reset之后当前版本变成版本一,同时原本版本二和版本三的提交都被清除了。
方法一reset的操作步骤:
- 使用git log查看版本号
git log
- 使用“git reset --hard 目标版本号”命令将版本回退。 举例我要回退到9feb83df6db8b132004325ab03377b2088cba540这个提交的版本:
git reset --hard 9feb83df6db8b132004325ab03377b2088cba540
- 回退完之后可用git log再检验当前版本。
- 使用“git push -f”提交更改:
git push -f
因为我们回退后的本地库HEAD指向的版本比远程库的要旧,此时如果用“git push”会报错。如下:
改为使用 git push -f 即可完成回退后的提交。
方法二:git revert
revert操作,适用于撤销某一版本,而保留该版本之后的其他版本提交。适用场景:例如某需求先后进行过第一、第二、第三次版本提交之后发现第二个版本有问题,需要撤销第二个版本的操作,同时保留第三次版本的提交,可使用git revert操作。
操作步骤:
- git log 查看之前的操作历史,找到要还原的commit,例如。
- 执行git revert -n命令即可回复某次提交
- 注意:如果撤销的是merge操作则需要提供 -m 参数 例如:git revert e2fa3afa69b1021a89203c4e70d28e52c9cfd6fa -m 1
版权归原作者 遇见小美好 所有, 如有侵权,请联系我们删除。