首页 > 解决方案 > VSCode git错误:致命:无法读取对象XXX:远程端意外挂断致命:错误:推送失败

问题描述

我厌倦了在 Windows 10 WSL1 上使用 git 2.17.1 将新分支推送到 github。我当时摸索着密码提示,但它超时了。当我再次尝试时,在它至少挂断一次之后,我现在收到以下错误消息:

Pushing to https://github.com/repo/project
fatal: failed to read object <hash>: Permission denied
fatal: The remote end hung up unexpectedly
fatal: The remote end hung up unexpectedly
fatal: The remote end hung up unexpectedly
error: failed to push some refs to 'https://github.com/repo/project'

如何撤消此操作,以便再次推送?

标签: gitgit-push

解决方案


此消息意味着由于权限问题,无法读取 Git 需要推送的对象之一。

如果这些文件位于 WSL 中的主目录下,请考虑尝试在您的文件上运行类似chmod或的内容,以便可以访问它们。chown您可以运行find .git -ls以显示文件的所有者和权限。目录需要对您的用户具有读取和执行权限,文件需要具有读取权限。

如果您正在寻找一种生硬的方法,您可以这样做(将您的用户替换为bk2204):

$ sudo chown -R bk2204: .git
$ chmod -R u+rwX .git

如果这是一个 Windows 目录,那么事情就有点棘手了。您需要使用正常的 Windows 权限机制来修改内容。如果您尝试将文件存储在一个特殊的 Windows 目录(如 Documents)中以供 WSL 使用,请不要:Windows 会限制许多程序(包括部分或全部 WSL)对这些目录的访问,并在其中存储需要WSL 可以访问只会导致问题。


推荐阅读