Git版本回退

版本回退

当我们在网上下载一个项目下来之后,但是下来下来的项目都是已经完成项目所有功能的,但是你又想从项目刚开始做时看一遍每次push之前完成代码,怎么办呢?碰巧Git提供了一个叫做版本回退的方法,具体怎么实现,请看下面。

项目下载完成后我们通过git log或者git reflog查看到了项目所有的提交记录,按Q是退出

从上图可以看出这个项目提交过很多次push,并且最后一次文件更新修改的commit是LICENSE(因为增加(或者修改)了名为这个LICENSE文件,所以我commit 就写LICENSE),那么你如果想将项目所有文件回退到git push之前某个时间提交的文件更新怎么实现呢?

比如我想回退至push提交名为finished的版本文件,那我应该执行下面

git  reset --hard  0fd008cff76f63df2f3d9318be3cff734b7602d9    // 升级功能效果立即改变

git  reset  0fd008cff76f63df2f3d9318be3cff734b7602d9    // 升级功能效果不会改变,可以通过vs code代码工具查看到升级功能中修改增加了哪些代码

从上图中我们可以看出版本回退成功了,再次打开项目文件夹一看,发现之前的LICENSE这个文件和部分功能文件不见了,因为现在是回退到项目之前提交版本实现的文件。

git reset --hard HEAD^  //在当前版本回退到上一个版本,上上一个版本就是 HEAD^^

撤销commit

一般情况下写完代码后,我们一般这样

git add . 

git commit -m "本功能全部完成"

执行完commit后,你又发现自己commit错了,想撤回commit,怎么办?

git reset --soft HEAD^

这样就成功的撤销了你的刚才commit

注意,仅仅是撤回commit操作(你的git add . 仍然在),您写的代码仍然保留。

至于这几个参数:
--mixed
意思是:不删除工作空间改动代码,撤销commit,并且撤销 git add . 操作
这个为默认参数,git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一样的。

--soft
不删除工作空间改动代码,撤销commit,不撤销git add .

--hard
删除工作空间改动代码,撤销commit,撤销git add .

注意完成这个操作后,所有文件都恢复到了上一次的commit状态。

顺便说一下,如果commit注释写错了,只是想改一下注释,只需要:
git commit --amend

此时会进入默认vim编辑器,修改注释完毕后保存就好了。

原文地址:https://www.cnblogs.com/jing-tian/p/11317388.html