【问题标题】:"failed to lock" error“锁定失败”错误
【发布时间】:2012-12-15 22:03:16
【问题描述】:

当我将分支从本地存储库推送到拇指驱动器时,我需要一些帮助来解决错误。我相信问题是由不同驱动器之间来回切换引起的。特别是,我丢失了一个并开始使用替代品。然后,当我找到原版时,我切换回了它。现在看来我的一些裁判/负责人搞砸了。例如,当我尝试推送分支时得到以下输出:

$ git push origin android-lite 
Counting objects: 111, done.
Compressing objects: 100% (98/98), done.
Writing objects: 100% (109/109), 29.63 KiB, done.
Total 109 (delta 40), reused 0 (delta 0)
error: unable to resolve reference refs/heads/android-lite: No such file or directory
remote: error: failed to lock refs/heads/android-lite
To /media/2AC0-E4E2/devel/src/java/bbct/
 ! [remote rejected] android-lite -> android-lite (failed to lock)
error: failed to push some refs to '/media/2AC0-E4E2/devel/src/java/bbct/'
$ 

如果我理解正确,这表示 refs/heads/android-lite 在原点不存在。但是,我很困惑为什么 git 不创建新分支。我的本地 repo 中有什么东西表明 android-lite 分支已经存在于 origin 中吗?

【问题讨论】:

  • 你可以用git gc和git remote prune清理你的repo。

标签: git version-control git-push


【解决方案1】:

如果调试远程 repo 过于复杂(如 this question、git gc、git prune、git fsck、...)),您仍然可以:

  • git bundle你当前的仓库,只会给你一个文件,
  • 将该文件复制到远程驱动器上
  • 从该捆绑文件中克隆 git
  • 将您当前的远程地址设置为该新路径

这有点像“How to synchronize two git repositories”,使用捆绑包执行此任务是为了确保您没有任何文件错误副本。

【讨论】:

  • 感谢您的建议。为了强调我的问题中的一个细节:远程存储库位于插入我计算机的拇指驱动器上。我可以轻松地cd 直接到远程仓库并从那里操作它。因此,如果有一个简单的解决方案可以直接操作遥控器,我完全赞成。
  • @Code-Guru 我已链接到解释您可以尝试调试的命令的问题。关于我的建议,我仍然会使用捆绑软件来初始化一个干净的仓库。或者您可以直接在所述拇指驱动器上克隆您的本地存储库。
猜你喜欢
  • 2020-08-16
  • 2011-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-09
  • 1970-01-01
  • 2023-03-08
  • 2017-05-12
相关资源
最近更新 更多