git pull遇到的问题

今天遇到了一个git pull 更新代码的错误,提示我更新失败,把本地更改的代码保存或者上传之后再更新。于是我就在网上搜了一下找到了两种解决办法,在这了总结一下

error: Your local changes to the following files would be overwritten by merge:
复制代码

解决方法1: 如果你想保留刚才本地修改的代码,并把git服务器上的代码pull到本地(本地刚才修改的代码将会被暂时封存起来)

git stash
git pull origin master
git stash pop
复制代码

git stash 命令可以将在当前分支修改的内容放到缓存区中,并会自动建立一个缓存的list集合,方便管理。

如果想将修改的内容重新释放出来,git stash apply 和 git stash pop 都可以达到这个目的。

但是两者有什么区别呢。

刚才说过,git stash 可以形成list 集合。通过git stash list 可以看到list下的suoy

使用git stash apply @{x} ,可以将编号x的缓存释放出来,但是该缓存还存在于list中

而 git stash apply,会将当前分支的最后一次缓存的内容释放出来,但是刚才的记录还存在list中

而 git stash pop,也会将当前分支的最后一次缓存的内容释放出来,但是刚才的记录不存在list中

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

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

git reset --hard
git pull origin master
复制代码
  1. 假设有2个提交记录
commit def5adef853da4cc05752bdb36577c127be71ba5

Author: 132982jianan <1072772483@qq.com>
Date:   Thu Dec 28 16:01:36 2017 +0800



    add data to 1.txt

commit f36801544670e00b2f59a28e19017d2786c4085e
Author: 132982jianan <1072772483@qq.com>
Date:   Thu Dec 28 15:59:46 2017 +0800
复制代码
init 1.txt
复制代码

(END)

  1. 现在回到最开始的那一个提交 git reset --hard f36801544670e00b2f59a28e19017d2786c4085e

  2. 查看日志,就会发现只剩下一个提交了

git log

commit f36801544670e00b2f59a28e19017d2786c4085e
Author: 132982jianan <1072772483@qq.com>
Date:   Thu Dec 28 15:59:46 2017 +0800
init 1.txt
复制代码

(END)

  1. 这个时候,发现回退版本错了,那么就用git reflog查看提交记录
git reflog

f368015 HEAD@{0}: reset: moving to f36801544670e00b2f59a28e19017d2786c4085e
def5ade HEAD@{1}: reset: moving to def5ade
f368015 HEAD@{2}: reset: moving to f36801544670e00b2f59a28e19017d2786c4085e
def5ade HEAD@{3}: commit: add data to 1.txt
f368015 HEAD@{4}: commit (initial): init 1.txt
复制代码
  1. 找出想要回退的版本,进行回退

    恢复 git reset --hard def5ade

  2. git reset --hard 和 git reset --sort区别

git reset –-soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可;
git reset -–hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容,撤销的commit中所包含的更改被冲掉;
复制代码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值