如果你还不会用 git 回滚代码,那你一定要来看看
在日常coding的过程中免不了分支之间的合并,回滚、提交、打tag等操作,如果你现在还不知道怎么使用git工具回滚代码,或者总是担心出错没有把握怕把代码搞丢,这很危险毕竟代码搞丢是很大的事情小则扣绩效重则多扣点,但是 dont worry,你很幸运能看到这篇文章,当你看完以后就不会在有代码丢失的情况,因为我会带你手把手建分支模拟回滚的常见情况
------欲知后事如何,请看下文🔽
介绍
------来自百度百科
前言
git revert和git reset来进行回滚,这两种分别对应的不同的情况我尽量简单明了的介绍这两个命令都能做些什么,接下来我会从个人仓库新拉个分支从0开始,建两个分支,分别是主分支master和开发分支develop来进行模拟
开始
reset介绍
1、 reset的作用是当你希望提交的commit从历史记录中完全消失就可以用2、比如你在 master分支提交了A-->B-->C提交了三个记录,这个时候如果C记录有问题你想回滚到B就可以用git reset进行3、这个命令大概率的情况都是用在我们主分支的,因为我们上线的分支一般是 master分支然后从develop进行功能开发4、开发完成之后将分支合并到 master,如果在上线之前发现合并的分支用问题可以将develop合并过来的分支进行回滚5、说白了就是取消 develop的本次合并6、但是有一种情况就是协作开发的时候大家都合并到 master之后就不能用reset强行回滚commit因为这样会把其他人的提交记录给冲掉,这时候就可以用revert来进行操作我们在下面说
git log查看commit可以看到目前只有一个刚才提交的commit
master分支迁出一个develop分支git branch develop,并且切换到该分支 git checkout develop
develop分支新增一段代码,这个时候develop的commit记录就新增了一条B的记录


注意这里有个问题当你进行分支合并的时候,有时候会发现虽然代码不一样但是在进行分支合并的时候就提示代码没有更新,就是因为当前的开发分支的commit记录是落后于要合并的目标分支的,造成这种情况的原因就是reset滥用造成的,所以reset一定要慎用
develop分支的代码合并到master,切换到master分支 执行git merge develop
git log查看commit记录找到B记录,准备回滚这一条,回滚的时候不需要输入全部的commid一般是前7位就够用
git reset 69fde2c进行回滚,这个时候查看log记录发现最后一条新增c记录没有了,这里还有个问题如果直接使用git push推送会有以下提示。
这是因为本地的记录因为我们的回滚已经落后于仓库的代码了,这个使用需要使用 git push \-f进行强制提交
revert介绍
1、revert的原理是,在当前提交后面,新增一次提交,抵消掉上一次提交导致的所有变化。它不会改变过去的历史,所以是首选方式,没有任何丢失代码的风险 2、revert可以抵消上一个提交,那么如果想要抵消多个需要执行 git revert 倒数第一个commit id 倒数第二个commit3、这个就常用于当你提交了一次commit之后发现提交的可能有问题就可以用到revert 4、还有一种情景是已经有很多人提交过代码,但是想改之前的某一次commit记录又不想影响后面的也可以使用revert,他会把你后面提交的记录都放到工作区只是合并的时候需要注意一点 5、微信搜索readdot,关注后回复 视频教程 获取23种精品资料

git revert 16083ce,如果你也用的是vs code可以看到工作区的变化,并且在控制台可以提交默认的commit
Revert 新增C,并且原来的新增C还是在的
commit记录打tag
1、在上线之前我们需要对当前的commit记录打一个tag方便上线的代码有问题可以及时回滚
git tag列出所有的tag列表
git tag [name],我们新增一个 git tag 测试4,在使用git tag 查看一下
git show [tag名字],举个例子git show 测试1,上线之后如果有问题我们就可以根据 下图的commit id进行代码回滚
结束
评论
