尝试git pull with error:无法打开.git / FETCH_HEAD:权限被拒绝

时间:2012-11-02 13:06:08

标签: git github pull

请帮帮我,我正试着在我的终端上运行:

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

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

30 个答案:

答案 0 :(得分:161)

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

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

答案 1 :(得分:131)

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

转到项目文件夹:

chown -R youruser:yourgroup .git/

答案 2 :(得分:36)

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

sudo chmod g+w .git -R

最适合我。

对于MacOS

sudo chmod -R g+w .git 

答案 3 :(得分:28)

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

答案 4 :(得分:17)

这个问题的答案确保.git / FETCH_HEAD具有写入权限,您将全部设置。

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

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

答案 5 :(得分:14)

在我的情况下工作正常:

rm -f .git/FETCH_HEAD

答案 6 :(得分:11)

尝试这样,

第1步:首先检查一下你是谁?它将返回当前用户名,例如 ubuntu

$ whoami 

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

sudo chown -R ubuntu .git/

答案 7 :(得分:11)

就我而言,我只能读取.git / FETCH_HEAD文件的读取权限。我必须做" sudo chmod g + w .git / FETCH_HEAD"为了能够做拉取请求。

答案 8 :(得分:8)

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

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

答案 9 :(得分:7)

如果您尚未将自己添加到拥有.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. 将您注销并重新登录以刷新您的群组成员资格文件权限
  5. 如果您最近刚刚做了类似的事情(将自己添加到拥有.git/的群组中),那么您需要先退出并重新登录,然后才能在.git/FETCH_HEAD期间写信给git pull你的>>> mylist = [[1,2,3], ['a', 'b', 'c'], [5, 8, 10], [100, 200, 30]] >>> zip(*mylist) # In Python 3.x, this returns an iterator instead of a list [(1, 'a', 5, 100), (2, 'b', 8, 200), (3, 'c', 10, 30)] >>> tuple(zip(*mylist)) ((1, 'a', 5, 100), (2, 'b', 8, 200), (3, 'c', 10, 30))

答案 10 :(得分:4)

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

答案 11 :(得分:3)

这对我有用:

  1. 右键单击.git文件夹
  2. 点击获取信息
  3. 为您的用户设置权限
  4. 单击Cog图标,然后单击“应用于随附的项目”
  5. git中没有更多权限被拒绝错误。

答案 12 :(得分:2)

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

所以在夏天

  1. 转到git的父目录

    $cd your path
    
  2. 找到.git direcotry

    的群组所有者
    $ll .git     
    
  3. 将您的用户添加到该群组

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

  5. 享受它;)

答案 13 :(得分:2)

隐藏.git文件夹并且其中的所有文件也被隐藏时出现此问题。 只有.git文件夹隐藏,没有递归文件更新,它将工作。

答案 14 :(得分:2)

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

尝试两种解决方案都应该对您有用

1- sudo chmod g+w .git -R

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

2 - rm -f .git/FETCH_HEAD

答案 15 :(得分:2)

只需转到您的根文件夹并运行以下命令:

chmod a+rw .git/FETCH_HEAD

答案 16 :(得分:1)

在为Windows使用git扩展时,我收到了此消息。我的修复是简单地关闭git扩展然后再以管理员身份打开

答案 17 :(得分:1)

通过运行命令为当前用户设置权限

$ sudo chown -R <username> .git/

答案 18 :(得分:1)

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

sudo chown -R $(whoami) ./

答案 19 :(得分:1)

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

与组或所有权无关。仅仅花了我两天的时间,有人就枪杀了我...

答案 20 :(得分:0)

当我在做 bundle install 时,我得到了:

Following files may not be writable, so sudo is needed:
  /Library/Ruby/Gems/2.6.0
  /Library/Ruby/Gems/2.6.0/bin
  /Library/Ruby/Gems/2.6.0/build_info
  /Library/Ruby/Gems/2.6.0/bundler
  /Library/Ruby/Gems/2.6.0/cache
  /Library/Ruby/Gems/2.6.0/doc
  /Library/Ruby/Gems/2.6.0/extensions
  /Library/Ruby/Gems/2.6.0/gems
  /Library/Ruby/Gems/2.6.0/specifications
Fetching gem metadata from https://rubygems.org/.........
error: cannot open .git/FETCH_HEAD: Permission denied

我按照 here 中的步骤操作并更新了我的 bash_profile 以添加 rbenv 垫片。

export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"

但出于某种未知的原因,我将它们注释掉了。取消注释后,我就能够成功运行 bundle install

答案 21 :(得分:0)

这里有很多答案,很多建议做一个chown。 对我来说,将用户更改为拥有文件夹的用户(在我的情况下为tomcat)要容易得多,因为允许所有者写: sudo su tomcat 并且比做 git pull 无需更改权限。我之所以喜欢这样,是因为我不必记住在完成操作后将权限更改回去。

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

注意:请勿授予非sudo写入服务的文件夹的权限!

答案 22 :(得分:0)

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

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

答案 23 :(得分:0)

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

答案 24 :(得分:0)

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

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

      

    sudo chmod a + rw .git -R

希望它会有所帮助.. !!

答案 25 :(得分:0)

就我而言,

  

sudo chmod ug + wx .git -R

此命令有效。

答案 26 :(得分:0)

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

答案 27 :(得分:0)

我得到了这个,因为我的盒子上有超过1个用户帐户。我以用户A身份登录,并且位于用户B的目录中。用户A没有权限使用用户B的内容。一旦我意识到我不在我认为我在文件系统中,这个错误是有道理的。

答案 28 :(得分:-1)

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

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

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

答案 29 :(得分:-1)

在我的情况下,该工作:我只是在命令前写了sudo

sudo npm run deploy