试图与错误git拉:无法打开.git / FETCH_HEAD:权限被拒绝

请帮助我,我试图在我的terminal中运行这个:

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 

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

看起来第一个没有工作,因为你的用户没有权限来改变这个目录,第二个是因为你的root用户没有正确的SSH密钥来访问这个git仓库。

取决于你想要做什么,最好将资源库克隆到不同的目录,或者可以chown当前目录以便为用户提供完全访问权限

检查.git/目录是否有足够的权限。 你应该有写权限。 您可以使用以下命令设置它们。

转到您的项目文件夹:

 chown -R youruser:yourgroup .git/ 

这是一个UNIX权限问题。 不要使用sudo来克隆存储库。 你没有和root一样的ssh密钥,你也不应该以超级用户身份工作。 试试ls -la来查找文件的权限并使用chmod(或者sudo chown)来修复它们。 希望有所帮助。

如果你想给组的权限,

 sudo chmod g+w .git -R 

为我工作最好。

这个问题的答案确保.git / FETCH_HEAD具有写权限,你将被设置。

我在Windows上遇到了这个问题,并通过提供写入权限来解决问题。

在unix中,可以运行chmod a+rw .git/FETCH_HEAD ,然后运行。

在我的情况下工作很好:

 rm -f .git/FETCH_HEAD 

在我的情况下,我只能读取.git / FETCH_HEAD文件。 我必须做“sudo chmod g + w .git / FETCH_HEAD”以便能够执行拉取请求。

我在Windows上遇到了第一个问题(FETCH_HEAD权限被拒绝)。

我通过以pipe理员身份运行Git Bash来修复它(右键单击,以pipe理员身份运行)。

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

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

这是什么:

  1. 找出哪个组拥有.git/并将您的用户添加到该组。
  2. 确保组成员具有与.git/所有者相同的权限。
  3. 重复这个.gitignore ,你可能需要
  4. 注销并重新login以刷新组的成员资格文件权限

如果你最近刚刚做了这样的事情(把自己添加到拥有.git/的组中),那么你需要注销并重新login,然后.git/FETCH_HEADgit pull期间写入.git/FETCH_HEAD

运行Windows 7,当我遇到这个问题时,是因为我隐藏了.git文件夹。 权限很好,只是隐藏起来。 显示文件夹解决它。

看看.git目录的所有者和组(首先转到.git的父目录) ll .git ,查看ll .git的组和所有者,使用sudo usermod -a -G yourusername groupsofonwner将你的用户添加到所有者组中sudo usermod -a -G yourusername groupsofonwner ,然后注销=>login和一切正常工作。

所以夏天

  1. 去git的父目录

     $cd your path 
  2. find.git direcotry的组所有者

     $ll .git 
  3. 将您的用户添加到该组

     $usermod -a -G yourusername ownergroupofgit 
  4. 注销并login系统以使此更改生效。

  5. 好好享受 ;)

当.git文件夹被隐藏,并且其中的所有文件也被隐藏时,得到这个问题。 使只有.git文件夹隐藏没有recursion文件更新,它会工作。

我得到这个,因为我的箱子上有一个以上的用户帐户。 我以用户A的身份login,并在用户B的目录中。用户A没有权限给用户B的东西。 一旦我意识到我不在我以前在文件系统中的位置,这个错误是有道理的。

这对我工作:

  1. 右键单击.git文件夹
  2. 点击获取信息
  3. 设置权限给你的用户
  4. 单击Cog图标,然后单击应用于封闭的项目

没有更多的权限拒绝git中的错误。 🎉