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

时间:2019-09-27 00:50:52

标签: 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>

4 个答案:

答案 0 :(得分:12)

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

$ git update-ref -d refs/remotes/origin/[locked branch name]

然后使用$git pull

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

答案 1 :(得分:1)

如果您正在运行VSCode,则可能需要先将其关闭。
如“ microsoft/vscode issue 47141

  

当git-radar在后台进行抓取并且用户运行git fetch / pull时,会发生此问题。
  Git具有index.lock来在获取期间锁定索引,因此您不能通过并发获取来破坏索引。
  您的git命令失败,因为此锁定阻止git修改索引。

您也可以将git remote prune origin用作mentioned here

答案 2 :(得分:1)

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

错误:无法锁定ref'refs / remotes / origin / releases / branch1': 'refs / remotes / origin / releases'存在;不能创造 'refs / remotes / origin / releases / branch1'

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

执行命令后错误消失:

git remote prune origin

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

git update-ref -d refs/remotes/origin/releases/branch1

命令没有帮助。

答案 3 :(得分:1)

git remote prune origin

这个命令对我有用。