600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 【Git】远程仓库代码覆盖本地仓库代码 解决push上库冲突的问题

【Git】远程仓库代码覆盖本地仓库代码 解决push上库冲突的问题

时间:2021-08-29 17:49:56

相关推荐

【Git】远程仓库代码覆盖本地仓库代码 解决push上库冲突的问题

1. 问题描述

今天在修改了一个代码准备提交到远程仓库的时候发现出现了冲突,但是我很明显的记得我在push的之前有先pull更新了本地的代码。查询的时候发现了如下问题:

此处可以发现,我的当前分支为develop分支,并且提示我当前分支已经是最新版本了,但是是基于master分支,而我们的developmaster分支上的代码已经有很大的区别了,这就是问题的点了。

2. 产生原因

我在pull远程仓库的代码的时候,加上了-b master·这个参数,所以我只拉取了远程仓库中的master分支,造成我现在本地的develop链接的远程仓库分支不是我想的develop分支而是master分支,即出现了上图中的问题。

3. 解决措施

根据上面的产生原因,我们来一步步的解决:

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. 将本地修改的文件恢复,重新上库

成功截图:

至此,问题解决!记录一下解决问题的过程,怕年纪大忘了。。。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。