如何修复git-reo以删除已存在文件夹的update_ref错误



当我尝试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(克隆的
  1. 创建了一个本地分支documentation/manifest,并对其进行了一些工作,提交了工作
  2. 推着树枝。无法推送,因为存在一个名为documentation的已有3年历史的过时分支
  3. 已删除github上的分支documentation
  4. 再次按下。分支推送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

相关内容

  • 没有找到相关文章

最新更新