无法锁定 ref 'refs/remotes/origin/master'

Don*_*Liu 15 git

如果有一些更新,我总是cannot lock ref 'refs/remotes/origin/master'git pull第一次执行时得到。

完整的控制台日志如下。

D:\code\react-native\expo-multi-screen-starter>git pull
error: cannot lock ref 'refs/remotes/origin/master': is at b2459b4d5af42622cba55f9fe47ccd14fbd879bc but expected 76f11048c866cfe3e6570eaacf90db3cb7732723
From github.com:liudonghua123/expo-multi-screen-starter
 ! 76f1104..b2459b4  master     -> origin/master  (unable to update local ref)

D:\code\react-native\expo-multi-screen-starter>git pull
 App.js                                          | 19 ++++-----
 src/navigation/AuthStack.js                     | 14 +++++++
 src/navigation/RootNavigator.js                 | 22 ++++++++++
 src/navigation/TabNavigator.js                  |  4 +-
 src/screens/AuthLoadingScreen.js                | 35 ++++++++++++++++
 src/screens/HomeScreen.js                       | 19 +++++++++
 src/screens/{LoginScreen.js => SignInScreen.js} | 54 ++++++++++++++++++++++---
 7 files changed, 147 insertions(+), 20 deletions(-)
 create mode 100644 src/navigation/AuthStack.js
 create mode 100644 src/navigation/RootNavigator.js
 create mode 100644 src/screens/AuthLoadingScreen.js
 rename src/screens/{LoginScreen.js => SignInScreen.js} (61%)

D:\code\react-native\expo-multi-screen-starter>
Run Code Online (Sandbox Code Playgroud)

小智 35

您需要在 Git bash 上使用以下 Git 命令更新参考:

$ git update-ref -d refs/remotes/origin/[locked branch name]
Run Code Online (Sandbox Code Playgroud)

然后拉使用 $git pull

[locked branch name] 是由于提交 ID 不匹配而发生错误的分支的名称。

  • 一个永久的解决方案终于奏效了! (5认同)
  • 该解决方案应该有一个星号标记。这对我有用! (2认同)

小智 18

git remote prune origin
Run Code Online (Sandbox Code Playgroud)

这个命令对我有用。


SWd*_*WdV 12

我只需删除即可修复它.git/refs/remotes/,并且它会自动恢复。


gor*_*323 8

我的错误看起来有点不同:

错误:无法锁定引用 'refs/remotes/origin/releases/branch1':'refs/remotes/origin/releases' 存在;无法创建 'refs/remotes/origin/releases/branch1'

![新分支]releases/branch1 -> origin/releases/branch1(更新本地链接失败)。

执行命令后错误消失:

git remote prune origin
Run Code Online (Sandbox Code Playgroud)

顺便说一句,TortoiseGit 建议她这样做。但是这个

git update-ref -d refs/remotes/origin/releases/branch1
Run Code Online (Sandbox Code Playgroud)

命令没有帮助。

  • 多谢。这就像一个奇迹。你是一个救星。 (2认同)

Von*_*onC 5

如果您正在运行 VSCode,您可能需要先将其关闭。如“问题 47141
中所示microsoft/vscode

当 git-radar 在后台执行提取并且用户运行 git fetch/pull 时,会出现此问题。
Git 必须index.lock在提取期间锁定索引,因此您不能通过执行并发提取来损坏索引。
由于此锁阻止 git 修改索引,您的 git 命令失败。

您也可以按照此处提到的git remote prune origin方法进行尝试。

  • 是的,我经常在 VSCode 的集成终端中运行 git pull 。`git remote prune origin` 似乎删除了文件夹 `.git/refs/remotes/origin` 中对远程分支的引用,操作是否安全,对以后的 `git pull` 命令没有影响? (2认同)