Intern Day110 - git把本地分支push到远程服务器时报错"Updates were rejected because the tip of your current branch is behind"
在本地develop下开发完成后,经过add、commit等操作后,当走到最后一步pull操作的时候,产生了如下错误:
出现问题的原因
当我从远程服务器上拉取develop分支下的代码,在本地进行修改。
然后,在我clone之后,此时A同事也做了和我同样的操作,并且提交了修改到develop上。
这个时候,我的开发任务结束了,想要把代码后合并到远程服务的develop分支上,就会产生如上图所示错误。
概括来说,就是:不同的开发人员在没有约定的前提下,先后对同一份代码进行了修改提交,从而会在某些操作中产生冲突,所以报了错。
解决办法一(尽量不要用这种)
如果已经把所有的代码进行了add 和 commit,然后我尝试将远程代码拉取更新并与本地合并git pull -f origin develop
。(-f是强制的意思)
但是远程会多自动报一条信息(也就是强制合并的信息)
Merge branch 'develop' of git.xx:xxxxx into develop
解决办法二(用这个更优)
使用 git stash
命令。
首先明确一下 git stash
命令的使用场景:比如当对 develop
下的A分支进行修改,修改到一半,需要去修改B分支,这个时候如果直接 checkout
切换到B,会报错。这个时候我们就需要用到 git stash
命令去解决这个问题。
git stash
将未提交的改动保存在本地,让你可以进行修改、切换分支以及其他 Git 操作。(需要的时候,你可以重新应用这些存储的改动。)暂存是本地范围的,不会被 git push
推送到远程。
如果还未对代码进行commit,那么就将本地代码先存到暂存区stash中,然后进行pull。