git pull时报错error: cannot lock ref 'xxx': ref xxx is at (一个commitID) but expected的解决办法(unable to update local ref)

一、错误描述

  在执行git pull时候,报错如下:

  

 

 

 二、问题产生原因:

  原因是你这个git工程的.git/refs目录下跟踪的某些git分支,在git pull的时候,与远端的对应分支的refs对比发现不同,所以导致git pull报错。

  通过命令 git branch -a 查看本地和远程分支信息:

  

 

 

   可以看到:目前项目在本地的V1.0.1分支上开发,远程分支中有两个:remotes/origin/ V1.0.1和v1.0.1 , 本地的refs与远端不一致,导致拉取失败。

  查找原因,发现原来是由于自己的失误,在之前git pull操作提交代码时候,写成了  git push origin:V1.0.1:v1.0.1  ,该命令表示将本地的V1.0.1分支推送到远程origin主机的v1.0.1分支上,而由于 远程分支中不存在 v1.0.1,因此会被新建。

三、解决方法

  1、使用git命令删除 对应有问题的refs:

git update-ref -d refs/remoted/XXX        //XXX表示分支名称

  这是当前.git下refs文件中的分支信息,在这里也可以手动进行删除

  

 

 

   2、使用git命令简单粗暴强行 git pull:

git pull -p

 

  引用:https://blog.csdn.net/qq_15437667/article/details/52479792

 

 

  

  

posted @ 2021-02-26 16:04  Morango  阅读(4251)  评论(0)    收藏  举报
*{cursor: url(https://files-cdn.cnblogs.com/files/morango/fish-cursor.ico),auto;}