git pull时遇到git pull error :error: remote ref is at but expected问题的解决办法

原创 2016年06月01日 20:24:13

今天在拉取项目新版本的代码时,遇到了一个问题,对项目最新的代码进行git pull,报错:

error: cannot lock ref 'xxx': ref xxx is at (一个commitID) but expected (另一个commitID)

一开始我以为是分支出现了问题,索性就把该分支给删掉了,删掉之后重新由远程分支创建本地分支,一番操作之后发现根本没有用,还是会报这个错。一番搜索与操作之后,还是没能把这个问题解决,(其实在搜索到的某个stackoverflow页面中已经提到了这个问题,但是我没有看到)于是寻求组里高手的帮助。经过高手的一番指点,终于把这个问题给解决了。

原因

首先说一下,出现这个问题的原因:出现这个错误的原因,是因为在你的远程分支中,有名字相同的分支(这个相同是不区分大小写的),在我遇到的问题里,就是因为我们项目的远程分支里有两个分支除了首字母大小写不同之外,别的完全相同,所以才会出现这种错误。具体好像是要看你机器的平台,Windows与OSX这种大小写不敏感的系统平台就会出现这种情况。

解决方案

下面说一下解决的办法

  • 今天我采用的方法是直接在终端里输入:

    git update-ref -d (名字相同的分支名)

    然后再git pull,就一切顺利啦。

  • stackoverflow上还有人提供了另外一种解决方式:

    1. 首先将错误的远程分支删除
    2. 在终端运行
      git remote prune origin

    也会奏效,不过这样会影响到远程分支。上一种解决方法则不会影响到远程分支。

总结

为避免这种情况的出现,很重要的一点就是再给分支起名的时候一定要注意,,分支的名字应该有其特定的意义,而且注意不要与其他分支重名,不要只用字母的大小写来区分两个分支

版权声明:本文为博主原创文章,未经博主允许不得转载。

git pull时遇到error: cannot lock ref 'xxx': ref xxx is at (一个commitID) but expected的解决办法

git pull时遇到error: cannot lock ref ‘xxx’: ref xxx is at (一个commitID) but expected的解决办法在执行git pull时遇到如...
  • qq_15437667
  • qq_15437667
  • 2016年09月09日 00:07
  • 8849

cannot lock ref问题的解决

1. git pull代码出现 cannot lock ref 'refs/remotes/origin/branch_name': is at 95b2ddb09e303b4857d6c0fd654...
  • qq_29781403
  • qq_29781403
  • 2017年11月06日 10:30
  • 454

git pull/push: unable to resolve reference & unable to update local ref

git pull/push origin xxx 报错如下 error: cannot lock ref 'refs/remotes/origin/xxx': unable to resolve r...
  • jym_ycc
  • jym_ycc
  • 2017年06月20日 11:53
  • 1221

Git远程分支和refs文件详解

最近同时同步博客到github和gitcafe上,遇到一些问题,我们分如下几个方面来分析一下: 推送远程分支到同一个服务器 推送远程分支到不同服务器 总结一下...
  • forever_wind
  • forever_wind
  • 2014年07月07日 13:03
  • 26975

Git中的Reference及其refspec概述

1.Git Reference简写为refs 1)本地分支的Reference格式:refs/heads/ 如refs/heads/master,在保证唯一的情况下可以简写为master 2)远...
  • taiyangdao
  • taiyangdao
  • 2016年10月09日 14:25
  • 1595

Git 内部原理 - Git References

9.3 Git 内部原理 - Git References Git References 你可以执行像 git log 1a410e 这样的命令来查看完整的历史,但是这样你就要记得...
  • candyguy242
  • candyguy242
  • 2013年12月24日 18:19
  • 1478

[Git] 关于refs/for/ 和refs/heads/

1.     这个不是git的规则,而是gerrit的规则, 2.     Branches, remote-tracking branches, and tags等等都是对commite的...
  • caomiao2006
  • caomiao2006
  • 2015年03月13日 16:47
  • 4358

git中refs/for 和refs/heads

1.首先 简单点说,就是refs/for/mybranch需要经过code review之后才可以提交;refs/heads/mybranch不需要code review。如: 如果需要code ...
  • qq_31411389
  • qq_31411389
  • 2017年08月10日 11:58
  • 265

Git引用

原文: http://gitbook.liuhui998.com/7_3.html git中,分支(branch), 远程跟踪分支(remote-tracking branch)以及标签(tag...
  • hudashi
  • hudashi
  • 2012年06月16日 19:44
  • 2916

git基本命令、pull的流程、以及常见错误总结

git基本命令: git branch 查看所在分支 git checkout master 切换到主分支(其他分支类似) git checkout -b new-branch 新建分支 git st...
  • aym_fuhong
  • aym_fuhong
  • 2016年09月03日 21:37
  • 892
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:git pull时遇到git pull error :error: remote ref is at but expected问题的解决办法
举报原因:
原因补充:

(最多只允许输入30个字)