推送时出现 Git 错误 - update_ref 失败

标签 git android-studio

我在尝试推送本地提交时遇到问题,这可能是在 Android Studio 崩溃时发生的。这是错误:

update_ref failed for ref 'refs/remotes/origin/master': cannot lock ref 'refs/remotes/origin/master': unable to resolve reference refs/remotes/origin/master: Invalid argument

$git stash 表示 HEAD 现在在我最新的提交中。

我仍然是 git 的初学者,我不知道如何修复它。我能做什么?

最佳答案

您的 refs/remotes/origin 目录——这是您本地存储库中的一个目录——有某种问题。 (我不清楚到底出了什么问题,但你猜测它发生在 Android Studio 崩溃时对我来说也很可能。)

要修复它,您可以可能使用下面的命令序列。请注意,我一般不推荐它——您的 Git 服务,无论是 Android Studio 还是普通的命令行 Git,都不应该崩溃并给您留下损坏的存储库,因此您永远不应该 要做到这一点,这只是一次紧急维修,就像在一棵树倒在车上后用胶带把汽车贴满1,这足以让您稍后找到合适的维修/更换车辆:

$ cd $(git rev-parse --show-toplevel)  # if necessary
$ rm -rf .git/refs/remotes/origin      # remove all origin/*
$ mkdir .git/refs/remotes/origin       # create empty origin/
$ git fetch origin                     # repopulate origin/*

无论如何,此时您的 git push 很可能实际上已经成功,因为失败的是对您的 origin/master 远程跟踪分支的更新。

你的 Git 刚刚结束与另一个 Git 在 origin 上的对话,给他们(origin 的用户)更新他们的 master,并且origin 已经接受了这些更新,你的 Git 现在正在记录这样一个事实,即上次它与 origin 交谈时,他们的 master 被设置为某个特定的提交哈希值——你刚刚推送的那个。

(请记住,您的 origin/* 远程跟踪分支只是为您记录您的 Git 看到的他们的 Git 对其分支的内容。您的 Git 更新当你运行 git fetch 时,你的 Git 会与他们的 Git 对话并获取它的所有分支。你的 git 也会更新一些——不是全部——在 git push 上,当你Git 与他们的 Git 对话,并要求他们设置一个或多个分支,以您的 Git 交给他们的哈希值。)


1除了作为 Git 机械师,我推荐的部件实际上是合适的车身面板、皮带和软管以及夹子,而不仅仅是胶带、打包线和口香糖。 :-)

关于推送时出现 Git 错误 - update_ref 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38380009/

相关文章:

android-studio - ScrollView -在Android Studio中需要更多屏幕空间

Git rebase 仍然显示 merge 提交

git - 只重置一个分支

git - git中commit命令的确切含义是什么

git - 运行 git svn fetch --all 时,--all 选项有什么作用?

Android Studios RuntimeException : Unexpected exception in dex writer thread

java - AsyncTaskLoader真的继承自AsyncTaskLoader吗?

eclipse - 如何像在 Eclipse 中一样在 Android Studio 中复制错误

android - Android Studio 中 *.apk 的发布版本

git - 强制 Jenkins 从 GIT pull master