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失败。
原因是你这个git工程的.git/refs目录下跟踪的某些git分支,在git pull的时候,与远端的对应分支的refs对比发现不同,所以导致git pull报错。
通常产生这个问题的原因是(以分支git/yousa/feature_01为例):
-
有人操作git/yousa/feature_01这个分支,在git push的时候使用了git push –force,(当然这个人的git push是push不上去),导致远端分支被覆盖,你本地的refs与远端无法一致,导致问题
-
git分支是不区分大小写的,如果有人删除掉这个远端分支又重新新建了一个这个分支也会出现同样的问题。
根据前面的原因有一些操作方法,基本思路就是要么,强行git pull;要么则是删除掉有问题的refs,再进行git pull(个人还是推荐第二种)(以分支git/yousa/feature_01为例)
-
删除有问题的refs,可以直接在.git/refs下面根据错误提示删除对应的refs文件,比如这个就是需要删除refs/remotes/origin/git/yousa/feature_01文件(嫌麻烦直接删除整个refs目录也行)
-
使用git命令删除相应refs文件,
git update-ref -d refs/remotes/origin/git/yousa/feature_01
-
简单粗暴强行git pull,执行
git pull -p
另一种思路
error: cannot lock ref 'xxx': ref xxx is at (一个commitID
直观得看错误信息,git本次操作是获取锁失败,git的锁是使用一个共享的文件锁,故删除对应的index.lock文件也可以解决该问题。(直接释放锁)
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失败。问题原因原因是你
git
pull
时
遇到
error
: cannot
lock
ref
‘
xxx
’:
ref
xxx
is at (
一个
commit
ID
) but
expected
的
解决办法
在执行
git
pull
时
遇到
如下错误:
error
: cannot
lock
ref
‘
xxx
’:
ref
xxx
is at (
一个
commit
ID
) but
expected
遇到
这个错误会导致
git
pull
失败。
原因是你这个
git
工程的.
git
/
ref
s目录下跟踪的某些
git
分支,在
git
pull
的
时
候,与远端的
1.
git
pull
代码出现 cannot
lock
ref
'
ref
s/remotes/origin/branch_name': is at 95b2ddb09e303b4857d6c0fd6545a5062349e00e but
expected
20525f2edbef6ce8b3f6ff8c107abc25e9de973f
2.打开
git
-bash, 输入
git
pull
突然发现远
error
: cannot
lock
ref
'
ref
s/remotes/origin/innertag': is at 0440433ebbca6fc0a3dc041946346d004ae1d7ee but
expected
98150e1dcad8640daa66b5499d6e234d71806a6e
From code.
xxx
.com:xchannel/xc-centre
! 98150e1d..7a2c45c5 innertag
update_
ref
failed for
ref
'
ref
s/remotes/origin/master': cannot
lock
ref
'
ref
s/remotes/origin/master': unable to resolve
ref
erence '
ref
s/remotes/origin/master': re
ference broken
remote:
error
: cannot
lock
ref
'
ref
s/heads/dev/mz/dev': '
ref
s/heads/dev' exists; cannot create '
ref
s/heads/dev/mz/dev'
To http://xx.xx.xx.xx/
xxx
x/xx.
git
原因为:远程有
一个
分支为dev分支,然后本地新创建了
一个
分支为dev/mz/dev
所以会有问题;
解决:
git
branch -m feature/mz/dev
修改分支名称即可!
文章目录问题描述问题分析解决方案解决当次一劳永逸建议
多人在
一个
仓库协作
时
,在本地进行
git
pull
操作,
遇到
下面的错误,注意,已对下面中的项目信息进行了省略和替换:
error
: cannot
lock
ref
'...':is at <
commit
_
id
1> but
expected
<
commit
_
id
2>
From https://....
! <
commit
_
id
1>..<
commit
_
id
2> <branchName> -&
git
push的
时
候报错:remote:
error
: cannot
lock
ref
‘
ref
s/heads/develop’: is at 2e57ec93df385ba97723ccc9a36a903d769947f1 but
expected
69984ad367e8c21d1bad447a33251f8a9936e8ee
To http://
git
lab…..
git
! [remo
git
-
commit
-
id
-plugin is a plugin quite similar to https://fisheye.codehaus.org/browse/mojo/tags/buildnumber-maven-plugin-1.0-beta-4 for example but as buildnumber at the time when I started this plugin only supported CVS and SVN, something had to be done.
I had to quickly develop an
git
version of such a plugin. For those who don't know the previous plugins, it basically helps you to help you with the following tasks and answer related questions
Which version had
完整的错误信息
Сannot Run
Git
xcrun:
error
: inval
id
active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
看了下
Git
命令能否正常使用 命令行
git
–help 依然报和上面同样的错误
在查找了下
git
的安装目录
whereis
git
/usr/bin/