【错误】git push : Updates were rejected because the tip of your current branch is behind

1 问题

        起初是我想把本地项目push到服务器上的一个空仓库,但由于空仓库我之前是操作过,有过commit,push的时候就出了一些问题。

        我创建了一个远程仓库,然后在远程仓库中创建文件、删除文件,commit了几次,最后一次commit是一个删除操作,最终还是个空仓库。然后我在本地仓库弄好项目,将项目文件add后commit,再push过去,就出现了如下错误:

hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. If you want to integrate the remote changes,
hint: use 'git pull' before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

2 原因

        这种情况一般就是有冲突,远程仓库的最新状态没有同步到本地,本地在push时便会这样

        我的远程仓库有几个提交,本地只有一个提交,此时本地和远程是两个并行没有任何交集的分支(无分离、无合并),所以需要先把远程仓库的那几次提交给更新到本地。

3 解决方案

        通常的解决方法是先pull下来一次再push,或是强行push,如下:

#1、
git pull <远程仓库名> <远程分支名>:<本地分支名>	#拉取
git push <远程仓库名> <本地分支名>:<远程分支名>	#推送
#2、
git push <远程仓库名> <本地分支名>:<远程分支名> -f	#强行推送(不推荐)(该方法会将远程仓库强行恢复为本地未修改版本,并基于提交进行修改,覆盖远程仓库最新内容)

        但是,我这边测试后发现两种方式依旧报同样的错误。我先pull再push,即使分支图上显示已经把远程仓库的提交拉取下来,并且本地提交是最新的,但还是报错。 强行推送也依旧报错。

        所以我就想,干脆我就直接把远程仓库拉下来,再去add然后commit我的本地内容,再push。但我懒,又不想删除本地仓库重新搞,所以我就用reset来回退。我先打印分支图,然后复制我本地最新提交的上一个提交的id,即远程仓库那边最后一次提交,那次提交后远程仓库为空,使用此id回退到那次提交后,再进行add、commit、push。如下:

git log --graph --oneline --decorate --all	#在命令行查看分支图
git reset <提交id>	#混合回退,保留本地文件
git add .	#添加到暂存区
git commit -m "<提交备注>"	#提交到本地仓库
git push <远程仓库名> <本地分支名>:<远程分支名>	#推送到远程仓库

然后就成功push啦!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值