版本回退
当我们在网上下载一个项目下来之后,但是下来下来的项目都是已经完成项目所有功能的,但是你又想从项目刚开始做时看一遍每次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编辑器,修改注释完毕后保存就好了。