赞
踩
今天在修改了一个代码准备提交到远程仓库的时候发现出现了冲突,但是我很明显的记得我在push
的之前有先pull
更新了本地的代码。查询的时候发现了如下问题:
此处可以发现,我的当前分支为develop
分支,并且提示我当前分支已经是最新版本了,但是是基于master
分支,而我们的develop
和master
分支上的代码已经有很大的区别了,这就是问题的点了。
我在
pull
远程仓库的代码的时候,加上了-b master
·这个参数,所以我只拉取了远程仓库中的master
分支,造成我现在本地的develop
链接的远程仓库分支不是我想的develop
分支而是master
分支,即出现了上图中的问题。
根据上面的产生原因,我们来一步步的解决:
Step 1. 将本地的
develop
分支链接到远程的origin/develop
上
命令:
git branch --set-upstream-to=<主机>/<分支名称>
执行如下:
git branch --set-upstream-to=origin/develop
执行结果如下:
此时如果去执行git pull --rebase
这个指令,那结果会让你酸爽,截图如下:
然后当你按照提示执行指令git am --show-current-patch
的时候你就会发现一堆的冲突需要解决。所以这个时候就需要我们的第二步了。
Step 2. 保存修改的本地提交,然后将远程仓库的代码拉取下来强制覆盖本地的代码
为什么需要去保存我们的修改呢,原因是因为我们目前采用的这种覆盖的方法会将所有的没有保存的修改都删除掉,所以需要先保存一下修改的文件。
Ps : 如果你修改的文件是
git not tracked
的文件,那么可以不用暂存,在进行覆盖的时候不会影响到这些文件。
保存本地的提交有很多种方式,我自己用的有两种:
commit
到新的分支上去,然后再checkout
回来git stash
指令将所有的暂存区的内容缓存记录一下,使用的时候再提取完成了修改的暂存后,然后再checkout
回需要覆盖的分支,我们这里就是develop
分支。执行如下指令:
git fetch --all // 将当前本地分支关联的远程分支最新的代码拉取下来保存,只拉取,不合并
git reset --hard origin/develop // 将原来本地的develop分支重置为刚获取的远程develop分支
git pull // 将fetch的代码合并,覆盖本地的代码
至此,本地的develop
分支代码已经是最新的了,和远程的origin/develop
分支一致。
Step 3. 将本地修改的文件恢复,重新上库
成功截图:
至此,问题解决!记录一下解决问题的过程,怕年纪大忘了。。。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。