! [rejected] master -> master (non-fast-forward) error: failed to push some refs to

git 错误提示:
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.
hint: See the ‘Note about fast-forwards’ in ‘git push --help’ for details.

这个错误是怎么出现的?
我在本地master上提交了四次,分别是1,2,3,4,每次都推送到远程服务器,后来回退到第2次提交,然后又提交了两次,它们是5和6,这个时候再推送到远程服务器就报这个错误了。分支图就是下面这样:在这里插入图片描述
如果用git push -f强制推送,会丢失掉第3和第4次提交,有没有方法可以保留第3和第4次提交呢?
这个问题,在网上也看了一些贴子,都没有解决我的问题。先记录一下,找到解决办法再更新。

解决方法:
上图中,蓝色的master,提交为6的那个地方是我们当前本地最新的提交位置,红色origin/master代表的是远程最新的提交位置。
我们在红色的origin/master上右键单击,在出现的菜单中选择“Merge into current branch…”
在这里插入图片描述
出现弹窗,默认勾选,选择“Yes,merge”
在这里插入图片描述
分支图就会变成下面这样

在这里插入图片描述
这样再push就不会报错了。并且可以保留第3、第4次提交的信息。再次从远程克隆下来也是没有问题的。

===================================================================================
一般人看到这里就可以了

===================================================================================
过程中的一些记录:

上面的操作中,在勾选,选择“Yes,merge”这一步后,文件夹里面的内容改变为
在这里插入图片描述
多了3和4两个文件,并且它们是没有打绿色对勾的,这是不是它们没有被git管理呢?
用git status命令查看一下文件状态
在这里插入图片描述
发现并没有新文件,出现这种情况是windows刷新不及时导致的,我们在文件夹里刷新一下,就可以了。
在这里插入图片描述
另外,新出现的3.txt和4.txt文件可能并不是工程必须要的,因为第6次提交的时候是没有3.txt和4.txt文件的。我们可以直接删除掉3.txt和4.txt文件就行,这个时候就到了平常git管理的状态了,删除掉3.txt和4.txt文件后,再次恢复也是可以的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值