当前位置:   article > 正文

Git常见报错:Updates were rejected because the tip of your current branch is behind_updates were rejected beacu

updates were rejected beacu

事情是这样,一个空仓库里面别人上传了个readme.md。然后本地Unity工程链接到这个远程仓库的时候出现了问题,推送和下拉都不行。推送的时候 提示远端有一些东西本地没有,要先下拉,下拉的时候又拒绝下拉,看报错意思是

Updates were rejected because the tip of your current branch is behind

报错原因

该报错在git push时出现,一句话解释就是你在本地仓库上的修改没有基于远程库最新版本,你的本地仓库版本落后于远程仓库。(这个报错告诉我们在本地开发的时候,要经常使用git pull获取远程分支最新改动,这样才能保证在最终git push的时候本地commit历史和远程commit历史是一致的)

场景一:
起初本地仓库和远程仓库是同步的,然后某一天你在远程仓库上直接做了修改,此时远程和本地就不同步了。过了几天你在本地仓库做了一些修改,修改完成后使用git push想要提交,此时就会报错。

场景二:
起初本地仓库和远程仓库是同步的,不过有多个人都在该分支上开发,另一个人在某一天做了修改并提交到远程库了。此时远程库和你的本地库就不同步了。后续同场景一。

场景三:
git commit --amend之后,本地仓库和远程仓库的log版本历史不一致了,此时想要git push,也会报这个错。
个人理解: 使用该命令后,虽然所有提交记录的内容没变化,但最后一次提交的commit id变化了。git不允许push改变提交历史的操作,可以新增或者减少commit但不能改变原来的commit历史,因此会报冲突。

场景四:
开头描述的

解决方案

git pull

//针对场景一和二,养成先pull最新代码再修改的习惯即可
//在修改本地代码前,先使用git pull拉取远程最新代码,然后再进行修改(推荐--rebase)
git pull 远程仓库名 远程分支名 --rebase

  • 1
  • 2
  • 3
  • 4

git push --force

//针对场景三,在确认代码无误的情况下,直接使用--force强制推送
//这个选项对于一些禁止了--force操作的仓库来说使用不了
git push 远程仓库名 远程分支名 --force
  • 1
  • 2
  • 3

git pull origin master --allow-unrelated-histories

// 如果保证别人上传的和自己的不会互相影响,可以使用这个选项
git pull 远程仓库名 远程分支名 --rebase

  • 1
  • 2
  • 3
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/497691
推荐阅读
相关标签
  

闽ICP备14008679号