尝试使用错误进行git pull:无法打开.git / FETCH_HEAD:权限被拒绝


209

请帮助我,我正在尝试在终端中运行此命令:

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 2012年

3
您对尝试拉出的本地目录和文件具有写权限吗?另外,sudo由于它需要访问您的ssh密钥(而不是root的密钥),因此可能根本没有帮助。
本杰明·班尼尔

我遇到了这个问题,并通过向我的用户授予对该文件夹的“修改和完全访问”权限来解决此问题(Windows)
Frank

Answers:


193

似乎第一个失败,因为您的用户没有更改该目录的权限,第二个因为您的根用户没有访问该git存储库的正确SSH密钥。

根据您要尝试执行的操作,最好将存储库克隆到其他目录,或者chown将当前目录克隆到您的用户可以完全访问


我正面临类似的问题,并且不确定是否可以授予www-data用户更新.git目录的权限。我正在浏览器中使用php通过http调用shell脚本。这里的
KillABug 2015年

13
当您不小心忘记自己已经运行sudo su并且在回购中充当根用户时,通常会发生这种情况。sudo chown -R <username> .该目录中的一个简单的魔术!

149

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

转到您的项目文件夹:

chown -R youruser:yourgroup .git/

1
这给了我chown: youruser: Invalid argument
zakdances

43
应该是chown -R youruser .git/
混合

1
我必须chown .git/及其父文件夹才能正常工作
zadubz 2015年

这似乎是一个非常常见的问题..好的,如果您与其他用户一起工作,并且与其他用户进行了某些事情,则您更改了权限有点棘手。
勒内Höhle

如果 chown不起作用,请也运行此命令sudo chmod 0777 -R .git/
Kiran

48

如果您想授予该组权限,

sudo chmod g+w .git -R

最适合我

对于MacOS

sudo chmod -R g+w .git 

29

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


就是这个!我遇到了这个问题,因为我必须这样做sudo clone才能接受XCode的新许可协议。答案是接受协议,然后不使用sudo进行克隆。
巴纳比


21

要解决此问题,请确保.git / FETCH_HEAD具有写权限,并且您已准备就绪。

我在Windows上遇到此问题,并通过提供写权限解决了该问题。

在Unix中,可以chmod a+rw .git/FETCH_HEAD从项目存储库中运行,然后它应该可以工作。


.git/FETCH_HEAD如果许可问题发生了,则无法单独使用.git
2015年

17

像这样尝试

步骤1:首先检查您是谁?它将返回当前用户名,例如ubuntu

$ whoami 

第2步:然后为当前用户设置权限,在这种情况下为ubuntu by

sudo chown -R ubuntu .git/

这对我的作品,而在亚马逊上运行的话语安装lightsail的Ubuntu
基德

11

就我而言,我仅具有对.git / FETCH_HEAD文件的读取权限。为了能够执行拉取请求,我必须执行“ sudo chmod g + w .git / FETCH_HEAD”。


.git/FETCH_HEAD如果许可问题发生了,则无法单独使用.git
2015年

我必须允许组的git文件夹具有写访问权限sudo chmod g+w .git/FETCH_HEAD
William

sudo chmod g+w .git/FETCH_HEAD,完美的解决方案。
Rishi Kulshreshtha

9

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

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


9

如果您尚未将自己添加到拥有的组中.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. 注销您并重新登录以刷新您的组成员资格文件权限

如果您最近刚做过这样的事情(将自己添加到拥有的论坛中.git/),则需要注销并重新登录,然后才能.git/FETCH_HEAD在期间写信git pull




4

运行Windows 7时,遇到此问题是因为我隐藏了.git文件夹。权限很好,只是被隐藏了。显示文件夹即可解决该问题。


隐藏的目录,谁会th。
伊恩·纽兰德


3

这为我工作:

  1. 右键单击.git文件夹
  2. 点击获取信息
  3. 为您的用户设置权限
  4. 单击齿轮图标,然后单击应用于随附的项目

不再有权限拒绝git中的错误。🎉


2

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

所以在夏日

  1. 转到git的父目录

    $cd your path
    
  2. 查找.git指挥官的团队所有者

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

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

  5. 好好享受 ;)



2

该错误的原因可能是多种,但在我的情况下,我用root更新了分支,然后当我尝试用普通用户更新它时却给了我错误。

尝试两种解决方案都应该为您工作

1- sudo chmod g+w .git -R

如果不起作用,请尝试下一个解决方案,希望它可以解决您的问题

2 - rm -f .git/FETCH_HEAD

1

在Windows上使用git扩展名时收到此消息。我的解决方法是只关闭git扩展,然后以管理员身份再次打开



1

如果您没有给.git文件夹足够的权限,则会出现此问题。为了解决这个问题-

  1. 首先导航到您的工作目录。
  2. 输入此命令-

    须藤chmod a + rw .git -R

希望能帮助到你..!!


1

我有完全相同的错误,但就我而言,问题是由于升级到PHP版本后重新构建了Apache而导致的。长话短说,我忘了安装Apache模块'suexec'。

它与组或所有权无关。那只花了我两天时间就弄明白了,有人开枪打我...


1

就我而言,我有一个双启动系统(Windows 10和Linux),其NTFS磁盘上有项目文件夹。事实证明,在Windows 10本身启用的另一个更新中,其设置“快速启动”。在Windows中取消选中它后,Linux中的“错误:无法打开.git / FETCH_HEAD:权限被拒绝”消失了。


0

我得到这个是因为我的盒子上有多个用户帐户。我以用户A的身份登录,并且位于用户B的目录中。用户A无权访问用户B的资料。一旦意识到自己不在文件系统中,就可以理解该错误了。


0

如果在Windows Server中发现相同的问题,则需要以足够的权限(例如管理员权限)运行命令行。


0

对于MacOS用户(如果是High Sierra或更高版本),请使用以下命令:

sudo chown -R $(whoami) $(brew --prefix)/*

-1

TL; DR:在双启动系统中,关闭Windows的快速启动

我在双启动Ubuntu / Windows系统中遇到此问题。我无法在与Windows共享的任何分区(NTFS分区)中写入任何内容。

我最近重新安装了两者,却忘记了在Windows中打开“快速启动”功能。在Windows中重新启动并关闭该功能并重新启动后,一切恢复正常。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.