eslint git提交不上_我走过的git回滚的坑

背景

我不小心将旧版的代码push到我的个人开发远程仓库(叫它dev吧)了,然后我想从主库(master)拿到最新的代码改一改再push到我的dev。于是,我的思路是checkout到master,本地pull拉取最新的代码到本地master分支,然后checkout到dev,然后merge,结果呢,好死不死merge也没反应,每次都显示是已经是out-of-date了,但dev分支下的文件还是旧版的,整了一个小时也没整出来。问同事吧,让我reset回滚得了,于是我作为一个git小白,回滚也走坑了。

遇到的回滚问题

我以为的回滚流程是reset --hard --> 修改代码 --> commit&push到dev,这样不就行了么?然后等我push的时候,告诉我不行,就是咋都push失败。

按道理我回滚拿到了提交旧版前的正确代码,我在这个基础上增加我的功能,再提交咋就不行了呢?问题就出现在回滚之后的提交上。

首先,有一个前提,就是每次commit和push都必须是在最新提交的commit下,什么意思呢?就是每次提交必须要在最新的版本下。假如说我依次提交A、B、C三次代码,会有三次commit,最新的版本是C版本,我现在在C的基础上开发,提交也是在C的版本下,这没问题。那回到我的背景场景,我回滚,相当于我回滚到B版本,我拿到B版本的正确代码了,我再开发,就是在B的基础上开发,此时提交相当于在B的版本下提交,这就违背了我们的在最新版本下提交的规则,因为commit的log是按顺序保存的,你从B开始的commit-log已经被C版本占据了,只能从C的commit-log后面接,这就是我push不上的原因。

解决方法

将开发完的代码拷出来,然后回到最新的版本,再将代码拷回原来的位置,这样既保证代码是对的,且版本也是最新的。拿ABC的问题为例,我reset回滚到B后,开发完,然后将开发的代码cp拷到外面,然后pull origin dev回到最新的commit版本,再将代码cp拷回来,再commit&push到origin dev就好了。

没图,凑合看吧。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值