试图与错误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
这是什么:
- 找出哪个组拥有
.git/
并将您的用户添加到该组。 - 确保组成员具有与
.git/
所有者相同的权限。 - 重复这个
.gitignore
,你可能需要 - 注销并重新login以刷新组的成员资格文件权限
如果你最近刚刚做了这样的事情(把自己添加到拥有.git/
的组中),那么你需要注销并重新login,然后.git/FETCH_HEAD
在git 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和一切正常工作。
所以夏天
-
去git的父目录
$cd your path
-
find
.git
direcotry的组所有者$ll .git
-
将您的用户添加到该组
$usermod -a -G yourusername ownergroupofgit
-
注销并login系统以使此更改生效。
-
好好享受 ;)
当.git文件夹被隐藏,并且其中的所有文件也被隐藏时,得到这个问题。 使只有.git文件夹隐藏没有recursion文件更新,它会工作。
我得到这个,因为我的箱子上有一个以上的用户帐户。 我以用户A的身份login,并在用户B的目录中。用户A没有权限给用户B的东西。 一旦我意识到我不在我以前在文件系统中的位置,这个错误是有道理的。
这对我工作:
- 右键单击.git文件夹
- 点击获取信息
- 设置权限给你的用户
- 单击Cog图标,然后单击应用于封闭的项目
没有更多的权限拒绝git中的错误。 🎉