git分支代码回退至历史某次commit(不推荐此方法只做记录)

git分支代码回退至历史某次commit

背景

上周五用gitlab合代码,出现了冲突,因为之前没遇到,所以这次也是第一次在gitlab上处理冲突,我以为只是正常的选我要剩下的代码就好了,点完确认之后,我人傻了,它先反向合到了我的源分支,然后又合向目标分支,导致我的源分支多了一次由目标分支合向源分支的commit记录!

旁边的同事告我是不可以把目标分支合到源分支的,因为目标分支有做适配容器化部署的改造,而源分支是不需要的!!!然后我就开始慌了!!

目标

因为发现的较早,赶紧叫大家先别提交代码,我需要先回退到正常状态,否则代码会越弄越乱的,虽然很平静的告诉大家我马上回退,但其实内心慌得一批,之前咱也没回退过啊,好慌,又赶上周五晚上,很是焦虑,那也没招,看博客慢慢搞呗

探索

看到网上大多有两种方法:reset和revert

由于reset的强制性可能会丢失记录,大多推荐用revert,我寻思那就revert呗,结果疯狂报错,各种拒绝,更慌了

楼下做了个核酸,回来后决定用reset

实现

实在没招了,决定用reset,下面说一下我的步骤:

  1. 由于怕代码提交记录丢失,稳妥起见,我先拉了个新分支,用来把现在出问题的源分支先备份一下,这样及时搞乱了,还能回到现在这个"错误状态"
  2. 然后就是用idea开始按照下图操作了,先把本地回退至之前版本
    在这里插入图片描述
  3. 点完之后,发现本地代码已经回退到之前的提交上了
    在这里插入图片描述
  4. 接下来只需要把目前的代码push上去就好了,但是正常push会报冲突,各种问题,我由于时间紧迫,再加上之前已经备份过了,就选择了force push
    在这里插入图片描述
  5. 等push完之后,去远程代码仓库看,我的错误提交竟然直接就没了!!!意思就是,你选择的reset的commit之后的commit就都没了!!!也算是在没有产生更多连锁反应之前解决了

总结

这个方法其实是极不推荐的,我看各种博客都不建议这么做,因为会把之后的commit都删掉,这是一个十分危险的操作!! 万一别人这个时候提交了呢??那这个操作也会给他删了,好在我这边及时沟通没有别人提交,主要是之前没遇到过,然后revert一直报错心态崩了,再加上时间紧迫,只能出次下策,之后在研究下别的回退方法把,最好新生成一个commit保留之前的所有的commit,这样也好追究,这种直接删的强制push总之还是极不推荐的


版权声明:本文为weixin_42768546原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。