Git 更新远端服务器的代码到本地,并发生错误时解决方法

1. 问题描述

远端服务器feature分支(非master主分支)其中一个代码文件发生了变化,需要下载并更新最新的代码到本地项目中,问如何更新代码到本地项目?

2. 解决方法

这里先声明,我是基于master主分支新建的分支feature下进行开发的,所以我是需要下载feature分支下的最新代码,而非master分支。

2.1 使用git fetch拉取代码


//在本地l临时新建一个temp分支,并将远程origin仓库的feature分支代码下载到本地temp分支
git fetch origin feature  tmp 
 
//来比较本地代码与刚刚从远程下载下来的代码的区别
git diff tmp 
 
//合并temp分支到本地的master分支
git merge tmp
 
//如果不想保留temp分支 可以用这步删除
git branch -d tmp

//查看分支情况
git branch

2.2 使用git pull拉取代码

//取回远程主机某个分支的更新,再与本地的指定分支合并。
git pull <远程库名> <远程分支名>:<本地分支名>
 
//取回远程库中的feature分支,与本地的feature分支进行合并更新,要写成:
git pull origin feature:feature
 
//如果是要与本地当前分支合并更新,则冒号后面的<本地分支名>可以不写
git pull origin feature

这里说明一下git pull是git fetch和git merge两个步骤的结合。

2.3 在拉取代码与本地分支合并过程中报错:error: Your local changes to the following files would be overwritten by merge的解决

在2.1 和2.2操作中可能发生如下错误:
在这里插入图片描述
出现报错原因:有人在git服务器上直接修改文件,导致从git pull最新代码会提示这样的问题。
解决问题方法:
方法1非覆盖:保留拉取服务器代码之前本地修改的代码,并把git服务器上的代码pull到本地

git stash
git pull origin master
git stash pop

这样服务器上的代码更新到了本地,而且你本地修改的代码也没有被覆盖,之后使用add,commit,push 命令即可更新本地代码到服务器了。

方法2全覆盖:完全覆盖本地的代码,只保留服务器端代码,则直接回退到上一个版本,再进行pull

git reset --hard
git pull origin master

两者方法比较:
方法1非覆盖比较好用,且灵活性较强
方法2全覆盖会把服务器的代码全替代本地的代码,之前编写的代码会丢失

3. 总结

发现问题、解决问题、记录问题。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值