Git版本回退

前两天遇到了个情况,自己新增了接口,发现后面需求变更了,需要删除掉,于是想着版本回退,这里就顺便介绍下Git版本回退方法。
Git版本回退有两种方法,一种是reset,另外一种是revert。下面来介绍这两种方法。
Git reset 是一种看来相对暴力的方式,他会以删除Log日志版本记录的形式回退到指定版本。但是之前的版本其实可以在reflog里面查看。

#首先使用该方法查看版本号,后面可以接-n,n为数量,指定展示前几个版本记录。
git log 
#xxx换成你想回退的版本号。
git reset --hard xxx
#强制推送到远程仓库,让远程仓库版本号一致。
git push origin HEAD --force

至此回退操作以完成了。这时你可以再使用git log 查看,则会发现,回到到指定版本后,之后的版本号都不见了,这时如果想再此回退,需要使用 git reflog 查看版本号后,再次使用上述方法。
其实上述方法只适合单人控制版本的情况。 如果出现多人协作,如果对方没在你执行此操作后,重新拉取代码,那对方的版本号会比较新,那人家重新提交了代码,那么你之前的回退操作依然会被恢复。如果你此时再次拉取代码的话,你本地的回退操作又会恢复到之前的情况。
其实个人的理解,我认为reset的操作适合你修改了操作,但是没提交,那么你可以使用git reset回退版本到最新版本,然后就不需要push到远程仓库。
如果在多人协作的时候,提交了代码,但是又想回退版本,那么需要使用revert方法。
revert的解决上述办法的原理是它会产生一个新的版本号,因此其他人的源文件不会覆盖上去。
但是revert的使用方法需要注意的是,它是撤销某个版本号的修改,比如你想回退到倒数第二个版本,那么你需要revert 最后一个版本。它不是回退到某个版本,而是撤销某个版本的操作。
revert的使用方法

#查看版本号
git log
#xxx为版本号
git revert -n xxx
#因为会产生新的版本号,所以需要更新说明
git commit -m "更新内容"
#xxx为分支,如果没新建分支,则使用master
git push origin xxx

不过上述方法最后也是只是回退一个版本的情况,如果出现回退了多个版本的情况,还是需要人工执行部分操作的,因为他会产生提示如下图所示
Git版本回退_第1张图片

HEAD说明当前版本号的内容,parent说明远程仓库的内容,中间的就是这之间的修改内容,你需要手动修改确认是否删除这些代码,不然它可能影响的程序的运行。(由于我这是修改了注释内容,所以不影响,但是如果是在JAVA代码中,那么会影响系统运行。)如果版本涉及的文件多,在提交前,使用git status查看涉及的文件,然后手动打开各个文件,将涉及的文件做手动修改后再提交。
以上就是GIT版本回退的两种方式,根据情况选择合适自己的方式。

你可能感兴趣的:(git)