【问题标题】:git pull error: cannot lock ref 'ref/remotes/origin/xxx' ... exists; cannot creategit pull 错误:无法锁定 ref \'ref/remotes/origin/xxx\' ... 存在;不能创造
【发布时间】:2022-12-01 11:23:45
【问题描述】:

我今天做了几次 git pull,没有问题。我没有在本地更改或修改任何内容。

现在我再做一次 git pull,突然得到这个:

error: cannot lock ref 'refs/remotes/origin/task/DEV-2527/DEV-2535': 'refs/remotes/origin/task/DEV-2527' exists; cannot create 'refs/remotes/origin/task/DEV-2527/DEV-2535'
From https://dev.azure.com/xxx/xxx-web/_git/xxx-web
 ! [new branch]          task/DEV-2527/DEV-2535 -> origin/task/DEV-2527/DEV-2535  (unable to update local ref)

我试过“git gc”,但这没有帮助。

我读过“git remote prune origin”可能有帮助,但我不想做任何可能损坏 azure 远程仓库的事情。

【问题讨论】:

  • 修剪是本地操作,不会损坏远程存储库中的任何内容。问题源于您有两个分支共享“类似目录”的前缀:task/branch_atask/branch_a/branch_b。解决方案是重命名或“取消嵌套”分支:task/branch_b
  • 有趣的是,我不认为我创建了这个嵌套结构。这一定是另一个开发者推动的。我们如何解决?
  • 我的猜测是它已经在远程仓库中修复了,你只需要 git fetch --prune 来删除剩余的分支。

标签: git


【解决方案1】:

git fetch --prune

帮我修好了。开发人员不小心创建了一个具有旧分支路径的新分支。旧分支后来在 origin 上被删除,所以大概是 prune 在本地修复了这个问题。

【讨论】:

    【解决方案2】:

    作为一个数据点,如果你git clone这个存储库到一个新目录,你是否仍然看到同样的错误?这将帮助我们了解此问题是否确实只是本地和/或远程问题。如果您可以克隆到不同的目录,我会使用新目录。

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题,我删除了文件夹, '.git/refs/remotes/origin' 删除后,问题就解决了

      【讨论】:

        猜你喜欢
        • 2020-10-19
        • 2021-03-29
        • 2018-06-19
        • 2020-01-16
        • 2021-02-05
        • 2019-09-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多