git pull之后失败,后使用git pull --rebase origin master出现代码丢失

自己独立开发一个项目,所以代码就没有天天往git上上传,隔三岔五穿一次,在项目接近尾声的时候出现问题了。刚好前几天公司给换了一个电脑,添加密钥后再上传代码,没有上传成功,换仓库地址了,按理说我是git clone下来的,应该和远程仓库关联起来了,不应该存在上传失败的问题,又着急下班就没怎么在意。过了几天我想换一个远程仓库的地址吧,再此之前想解决一下为啥上传不了代码的问题,把问题放在百度上一搜,出现解决办法,囫囵吞枣就按步骤来搞了一下,这一搞出大事了,最近几天写的代码都找不到了,心如级焚啊,这不坏了,辛辛苦苦搞出来的东西难道要重写吗?我当时的心理就是,为啥不把东西搞清楚再操作,崩了啊,这TM如何是好?我使劲分析猜测问题应该就出现在git pull --rebase origin master这一操作上,最后在我不懈努力下终于搞出来,代码找回了。下面和大家分享一下我出现的问题和解决办法。

问题出现原git报错

failed to push some refs to 仓库地址
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g. hint: ‘git pull …’) before pushing again.
这个大意应该是说你的分支当前落后了,至于为啥落后了会出现git pull 无法实现的问题,我还是没有搞懂,有大神了解可以给小弟指点一下迷津。

百度该问题出现的解决方案

方案地址:https://jingyan.baidu.com/article/f3e34a12a25bc8f5ea65354a.html
我把最重要的拿出来看看
在这里插入图片描述
然后我就使用git pull --rebase origin master进行了操作。
随后我就崩溃的发现代码丢了,发现原因是换了地址上传后发现少了几个文件。

解决办法

执行git reflog
在这里插入图片描述
我再多次尝试记忆后觉得应该是commit:22那一条,因为这之前我还做了一些其他的操作,提交的备注忘记那个是那个了,这里提醒我们,备注一定要写成与当前提交原因有关的记录方法,不然忘记了自己也不知道那条是的。
随后执行 git reset --hard be20425,丢失的文件就找回来了。

感悟

经历这波操作以后,我深刻的感受到,提交代码到git仓库的重要性,当你误删,或者合并出错的时候,还可以回退到之前的版本。提交代码的时候,一定要备注原因,否则容易记混。最最重要的一点,一定要扩大自己的知识面,否则遇到问题真的很是个问题,看着很陌生,不想解决,不想突破,慢慢在历史长河中被淘汰。

git pull origin master与 git pull --rebase origin master的区别

git pull=git fetch + git merge
git pull --rebase=git fetch+git rebase

git fetch : 从远程分支拉取代码,可以得到远程分支上最新的代码。
git pull origin master与git pull --rebase origin master的区别主要是在远程与本地代码的合并上面了。
现在有两个分支:test和master,假设远端的master的代码已经更改了(在B基础上变动:C,E),test的代码更改了要提交代码(在B基础上变动:D,E),如下图:
在这里插入图片描述
问题就来了,如果C,F和D,E的更改发生冲突,那么就需要我们合并冲突了,下面我们来看看git merge和git rebase怎么合并的
git merge:
在这里插入图片描述
git rebase
在这里插入图片描述
对比可看出:git merge多出了一个新的节点G,会将远端master的代码和test本地的代码在这个G节点合并,之前的提交会分开去显示。
git --rebase会将两个分支融合成一个线性的提交,不会形成新的节点。

rebase好处

想要更好的提交树,使用rebase操作会更好一点。
这样可以线性的看到每一次提交,并且没有增加提交节点。
merge 操作遇到冲突的时候,当前merge不能继续进行下去。手动修改冲突内容后,add 修改,commit 就可以了。
而rebase 操作的话,会中断rebase,同时会提示去解决冲突。
解决冲突后,将修改add后执行git rebase –continue继续操作,或者git rebase –skip忽略冲突。
虽然使用rebase有好处,但是一定要谨慎使用,尽量少使用,或者不使用。

有问题的小伙伴可以和我沟通、联系。作为前端界的菜鸟,很寂寞,除了菜一无所有,有问题我们可以随时沟通商量解决办法,前端东西比较多,可能你见过的我没有见过,我见过的你不一定见过,沟通可以使我们强大,互相学习,共同进步。

  • 12
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值