! [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,这个时候再推送到远程服务器就报这个错误了。分支图就是下面这样:! [rejected] master -> master (non-fast-forward) error: failed to push some refs to_第1张图片
如果用git push -f强制推送,会丢失掉第3和第4次提交,有没有方法可以保留第3和第4次提交呢?
这个问题,在网上也看了一些贴子,都没有解决我的问题。先记录一下,找到解决办法再更新。

解决方法:
上图中,蓝色的master,提交为6的那个地方是我们当前本地最新的提交位置,红色origin/master代表的是远程最新的提交位置。
我们在红色的origin/master上右键单击,在出现的菜单中选择“Merge into current branch…”
! [rejected] master -> master (non-fast-forward) error: failed to push some refs to_第2张图片
出现弹窗,默认勾选,选择“Yes,merge”
! [rejected] master -> master (non-fast-forward) error: failed to push some refs to_第3张图片
分支图就会变成下面这样

! [rejected] master -> master (non-fast-forward) error: failed to push some refs to_第4张图片
这样再push就不会报错了。并且可以保留第3、第4次提交的信息。再次从远程克隆下来也是没有问题的。

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

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

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

你可能感兴趣的:(git)