如果有一些更新,我第一次执行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>
答案 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
这个命令对我有用。