当我尝试git push
分支documentation/manifest
:时,我得到以下错误
error: update_ref failed for ref 'refs/remotes/origin/documentation/manifest': cannot lock ref 'refs/remotes/origin/documentation/manifest': 'refs/remotes/origin/documentation' exists; cannot create 'refs/remotes/origin/documentation/manifest'
导致此错误的步骤是:
从远程repo(github(克隆的- 创建了一个本地分支
documentation/manifest
,并对其进行了一些工作,提交了工作 - 推着树枝。无法推送,因为存在一个名为
documentation
的已有3年历史的过时分支 - 已删除github上的分支
documentation
- 再次按下。分支推送OK到远程,我可以确认它在那里,但每次推送后都会出现上述错误。鉴于此,我认为这是一个局部错误
我查到了一些类似的问题,比如推送时的Git错误-update_ref失败,但这是针对另一个原因——我不清楚这个答案的建议解决方案在这种情况下是否会有所帮助,因为它们看起来很低,所以它们也可以用不同的方式把事情搞砸。
那么,每当我推送这个分支时,我需要做什么来消除这个错误呢?
我认为问题在于,您仍然有一个对以前的远程documentation
分支的本地引用,因为错误消息显示cannot create 'refs/remotes/origin/documentation/manifest'
,如果refs/remotes/origin/documentation
已经作为常规文件存在,则情况确实如此。
删除旧的本地引用应该可以解决这个问题:
git fetch -p
如果这不起作用,你甚至可以手动删除问题文件:
rm .git/refs/remotes/origin/documentation
您知道这是安全的,因为您删除了原点上的documentation
分支。
相关参考:
- 关于本地裁判的相关问题,在这里也适用于远程裁判:https://stackoverflow.com/a/2527452/3216427