在Android源码的修改过程中,在把本地的分支push到服务器的时候遇到如下错误:
error: failed to push some refs to
‘wsq@192.168.1.56:/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到服务器