推送时发生Git错误 - update_ref失败

时间:2016-07-14 16:55:25

标签: git android-studio

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

  对于ref'refs / remotes / origin / master',

update_ref失败:无法锁定   ref'refs / remotes / origin / master':无法解析引用   refs / remotes / origin / master:参数无效

$git stashHEAD现在是我最近的提交。

我仍然是git的初学者,我不知道如何解决它..我该怎么办?

5 个答案:

答案 0 :(得分:4)

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

要修复它,你可以 使用下面的命令序列。请注意,我不建议一般 - 您的Git服务,无论是Android Studio还是普通的命令行Git,都不应该崩溃并让您的存储库损坏,因此您永远不应该拥有为了做到这一点,它只是一个紧急修理,比如在树上落下之后将胶带放在你的车上 1 ,这足以让你以后到达正确的维修/更换车辆:< / p>

$ 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刚刚与origin上的其他Git对话,为他们origin的{​​{1}}用户提供了更新,master已接受这些更新,你的Git现在正在记录这样一个事实:上次与origin交谈时,他们的 origin被设置为某个特定的提交哈希 - 你刚刚推送的哈希。

(请记住,您的master远程跟踪分支机构只是为您记录Git看到的他们的 Git对其分支机构的内容。当您运行时,您的Git会更新这些内容{ {1}},你的Git与他们的Git交谈并得到它的所有分支。当你的Git与他们的Git交谈并要求他们设置时,你的git也会更新一些 - 而不是全部origin/* 一个或多个分支,你的Git交给你的哈希。)

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

答案 1 :(得分:0)

要将提交推送到您的在线仓库,您需要执行以下操作:$ git push origin branch_name。要知道你的分支名称,只需执行$ git status它就会显示出来(在git bash中它以蓝色着色)。您的问题可能来自不同的来源。基本上,git告诉你它无法理解你传递的内容作为你的论点。你确定你在你的存储库吗?

答案 2 :(得分:0)

除了接受的答案中提到的步骤外,我还必须使用下面的垃圾收集器命令来删除悬空提交blob。

     git gc --prune="0 days" 

您可以通过运行

来检查悬空blob
    git fsck

答案 3 :(得分:0)

我用完了磁盘空间,结果git无法写入锁定文件

答案 4 :(得分:0)

尝试运行:git gc --prune=now 并删除.git / refs / remote / origin