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