菜鸟笔记
提升您的技术认知

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

1、报错原因

  • 说明:

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

  • 场景一:

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

  • 场景二:

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

  • 场景三:

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

2、解决方案

1、git pull

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

2、git push --force

//针对场景三,在确认代码无误的情况下,直接使用--force强制推送
git push 远程仓库名 远程分支名 --force