git push 报错"Updates were rejected because the tip of your current branch is behind"

在Android源码的修改过程中,在把本地的分支push到服务器的时候遇到如下错误:

error: failed to push some refs to '[email protected]:/home/wsq/Extend/wsq/android/sprd/src/sc7731/android6.0/sc7731_m'
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.

情景:

当时,手上又一个客户需求比较多的项目一个人忙不过来,就几个同事一起来做。我先把我最新的修改push到服务器,此时的节点为:节点1。其他的同事在将我上传的分支checkout到自己本地进行修改,修改完成后他第一时间把他的代码push到了服务期。好了,当我修改完成后想将我本地的代码(我修改的地方和同事的修改没有冲突)传到服务器和同事修改的代码合并,我首先git pull了下,没有什么异常。但是当我git push origin HEAD的时候系统就提示“Updates were rejected because the tip of your current branch is behind”。


原因:

出现这个错误提示原因很简单,也就是一个先后顺序关系。


解决办法:

1、在你本地重新创建一个分支:git branch test (基于你要提交的分支)

2、在将你要git push的分支git  checkout 到情景中提到的节点1

3、git pull 将你同事的提交全部拉到本地

4、再使用git cherry-pick从test分支将你的修改逐条的提交拉回来

5、然后在使用git push origin HEAD将你的分支push到服务器

你可能感兴趣的:(git,git)