尝试进行git pull时出现错误:无法打开.git/FETCH_HEAD文件:权限被拒绝。

301

帮帮我,我正试图在我的终端中运行这个命令:

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

帮帮我,我不理解这个问题。


你是否已经将你的公钥添加到Github账户中? - madhead
5
你在尝试拉取时,本地目录和文件是否具有写入权限?另外,可能 sudo 在这里并没有帮助,因为它需要访问你的 SSH 密钥(而不是 root 的)。 - Benjamin Bannier
我曾经遇到过这个问题,通过给我的用户在该文件夹(Windows)上授予修改和完全访问权限来解决了它。 - Frank
我在Windows上以管理员身份运行了cmd,这为我解决了问题。感谢Benjamin Bannier表明这是一个权限问题。 - Gail Foad
36个回答

271

看起来第一个不起作用是因为您的用户没有更改该目录的权限,而第二个则是由于您的根用户没有正确的SSH密钥以访问该git仓库。

根据您想要做什么,可能最好将存储库克隆到另一个目录,或者可能使用chown命令将当前目录授予您的用户完全访问权限。


55
当你不小心忘记已经运行了 sudo su 并且正在一个存储库中充当根用户时,经常会发生这种情况。在该目录下运行简单的命令 sudo chown -R <username> . 即可神奇地解决问题! - Ray
1
只需为当前目录授予读写权限即可。就这样!'sudo chmod 777 amt/ -R' - Vishal J
类似的事情,我的目录位置在C盘(Windows)并且我需要管理员权限。移动到另一个位置后就可以正常工作了。 - Pratap Singh Mehra

191

检查您是否具有对 .git/ 目录的足够权限,您应该拥有写入权限。您可以使用以下命令来设置权限。

前往您的项目文件夹:

chown -R youruser:yourgroup .git/

56
应该使用命令 chown -R youruser .git/ - blend

57

如果您想要授予该群组权限,

sudo chmod g+w .git -R

对我来说最有效的方法。

适用于MacOS。

sudo chmod -R g+w .git 

35

尝试这种方法:

步骤1:首先检查你是谁?它会返回当前用户的名称,例如ubuntu

$ whoami 

步骤2:然后将权限设置为您当前的用户,即 ubuntu

sudo chown -R ubuntu .git/

34

在我的情况下,这样做可以正常工作:

rm -f .git/FETCH_HEAD

git branch -u

33

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


27

解决此问题的方法是确保 .git/FETCH_HEAD 具有写权限,然后您就可以开始了。

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

在Unix系统中,您可以在项目仓库中运行 chmod a+rw .git/FETCH_HEAD,之后它应该可以工作。


如果.git目录存在权限问题,则仅使用.git/FETCH_HEAD无法工作。 - Cœur

19

这将解决文件夹中的所有权限问题

sudo chown -R $(whoami) ./

这个方法总是有效的,但可能会对其他用户的访问造成影响。请注意,以前的答案考虑了组访问权限,而这个答案没有。 - ftrotter

12

在我的情况下,我只有对.git/FETCH_HEAD文件的读取权限。为了能够进行拉取请求,我必须执行“sudo chmod g+w .git/FETCH_HEAD”。


如果.git目录存在权限问题,则仅使用.git/FETCH_HEAD无法正常工作。 - Cœur
我必须允许组对git文件夹进行写访问 sudo chmod g+w .git/FETCH_HEAD - William
sudo chmod g+w .git/FETCH_HEAD,完美的解决方案。 - Rishi Kulshreshtha

12

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

通过以管理员身份运行 Git Bash(右键单击,以管理员身份运行),我解决了这个问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接