VSTS Git构建时出现cannot lock ref错误,求助解决
解决VSTS Git构建时的refs锁定冲突问题
这个问题我之前帮同事处理过,根源很明确:你的本地Git仓库里,refs/remotes/origin/x是一个独立的引用文件,但你现在要拉取的分支x/y需要把origin/x作为父文件夹来存放子分支引用——Git的引用系统不允许同一个名字既是文件又是文件夹,所以就抛出了这个锁定错误。
git remote prune origin没用是因为它只清理远程已经不存在的本地引用,而这个origin/x引用在本地是存在的(哪怕远程已经删掉了,prune可能没检测到?或者远程还存在),所以得手动处理:
先确认冲突的引用:
git show-ref | grep "origin/x"执行后你会看到一条指向
refs/remotes/origin/x的记录,这就是那个搞事情的文件引用。手动删除这个冲突的本地远程引用:
git update-ref -d refs/remotes/origin/x放心,这个命令只删本地的引用记录,不会碰远程仓库的分支。
最后重新执行你的构建操作,或者跑一次同步:
git fetch --prune现在本地引用结构就正常了,
x/y分支的引用可以顺利创建。
如果还是有问题,检查下远程仓库是不是同时存在x和x/y分支?如果是的话,建议把远程的x分支重命名或者删除,避免后续再出现类似冲突。
内容的提问来源于stack exchange,提问作者Shubh Rocks Goel
相关产品推荐
相关产品推荐

