VSCode git错误:致命:无法读取对象XXX:远程端意外挂断致命:错误:推送失败

问题描述

我厌倦了使用git 2.17.1在Windows 10 WSL1上将新分支推送到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'

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

解决方法

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

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

如果您正在寻找一种直截了当的方法,可以这样做(用您的用户替换bk2204):

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

如果这是Windows目录,那么情况会有些棘手。您将需要使用正常的Windows权限机制来进行修改。如果要尝试将WSL使用的文件存储在特殊的Windows目录之一(例如“文档”)中,请不要:Windows限制许多程序(包括部分或全部WSL)对这些文件的访问,并在其中存储需要WSL可访问性只会引起问题。