当我尝试推送本地提交时,出现了问题,这可能是在 Android Studio 崩溃时发生的。以下是错误信息:
更新引用“refs/remotes/origin/master”失败:无法锁定引用“refs/remotes/origin/master”:无法解决引用“refs/remotes/origin/master”的参考:无效参数。
$git stash
命令显示 HEAD
已经在我的最新提交上。
作为一个 Git 初学者,我不知道该如何解决它……有什么办法吗?
当我尝试推送本地提交时,出现了问题,这可能是在 Android Studio 崩溃时发生的。以下是错误信息:
更新引用“refs/remotes/origin/master”失败:无法锁定引用“refs/remotes/origin/master”:无法解决引用“refs/remotes/origin/master”的参考:无效参数。
$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 刚刚完成了与 origin
上另一个 Git 的通信,并向那里的用户提供了其 master
的更新,origin
已经接受了这些更新,而你的 Git 现在记录下了这个事实:在最后一次与 origin
交流时,他们的 master
被设置为某个特定的提交哈希值——你刚刚推送的那个哈希值。
(请记住,你的 origin/*
远程跟踪分支只是为了记录下你的 Git 所看到的他们 Git 分支的信息。当你运行 git fetch
时,你的 Git 会与他们的 Git 通信并获取它的所有分支。当你的 Git 与他们的 Git 通信并请求将其一个或多个分支设置为你的 Git 提供的哈希值时,你的 Git 也会更新其中的一些(不是全部)。)
1作为 Git 技术人员,我的建议是使用正确的车身面板、传动皮带和软管,以及卡箍等合适的零部件,而不仅仅只是胶带、铁丝和口香糖。:-)
git gc --prune="0 days"
git fsck
git gc --prune=now
并删除.git/refs/remote/origin。我磁盘空间不足,导致git无法写入锁定文件
$ git push origin branch_name
。要知道您的分支名称,只需执行$ git status
即可(在git bash中,它显示为蓝色)。您的问题可能来自不同的来源。基本上,git告诉您它无法理解您传递的参数。您确定您在您的存储库中吗?我的类似错误信息:
错误:无法更新引用“refs/remotes/origin/alex-he/ITCAML-1691”:无法为“.git/logs/refs/remotes/origin/alex-he/ITCAML-1691”创建目录:没有这样的文件或目录
我遇到这个问题是因为在两个目录中都有一个名为“alex-he”的文件,但它应该是一个目录。所以我手动删除了两个目录中的文件,然后问题得到解决。