请帮助我,我试图在我的终端运行这个:

asgard@asgard-A7N8X2-0:~/CollegePortal$ git pull
error: cannot open .git/FETCH_HEAD: Permission denied

那我试试这个

asgard@asgard-A7N8X2-0:~/CollegePortal$ sudo git pull
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

帮帮我,我不明白这个问题。


当前回答

如果您还没有将自己添加到拥有.git/的组中,那么您应该这样做。

sudo usermod -a -G $(stat -c '%G' .git) $USER
sudo chmod g+u .git -R
sudo chmod g+u .gitignore
su - $USER

它的作用:

找出拥有.git/的组,并将用户添加到该组。 确保组成员具有与.git/的所有者相同的权限。 为.gitignore重复此操作,您可能需要它 登出并重新登录,以刷新组成员文件权限

如果你最近做了类似的事情(将自己添加到拥有.git/的组中),那么你需要在git拉取期间能够写入.git/FETCH_HEAD之前注销并重新登录。

其他回答

就我而言,

sudo chmod ug+wx .git -R

此命令有效。

sudo chmod -R 777 .git或者如果你想为自己添加rw权限,你可以使用sudo chmod -R +rw .git

这里有很多答案,很多建议做咀嚼。 对我来说,将user改为拥有该文件夹的用户(在我的例子中是tomcat)要容易得多,因为所有者可以这样写: Sudo su tomcat 然后做一个 git拉 无需更改权限。我更喜欢这样做,因为我不需要记得在完成操作后重新更改权限。

要找到拥有该文件夹的用户,执行ls -la

注意:不要给所服务的文件夹非sudo写访问权限!

当我在windows上使用git扩展时,我得到了这个消息。我的解决方案是简单地关闭git扩展,然后以管理员身份再次打开

如果你想给小组权限,

sudo chmod g+w .git -R

对我来说是最好的。

是操作系统

sudo chmod -R g+w .git