尝试git拉错:不能打开。git/FETCH_HEAD:权限被拒绝

请帮助我,我试图在我的终端运行这个:

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

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

416058 次浏览

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

根据你要做的事情,最好将存储库克隆到一个不同的目录,或者可能将chown克隆到当前目录,从而为你的用户提供完全访问权

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

进入你的项目文件夹:

chown -R youruser:yourgroup .git/

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

在我的例子中,我只有对.git/FETCH_HEAD文件的读访问权。我必须做“sudo chmod g+w .git/FETCH_HEAD”,以便能够做一个拉请求。

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

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

这个问题的答案是确保.git/FETCH_HEAD有写权限,这样你就全部设置好了。

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

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

在我的情况下,工作很好后:

rm -f .git/FETCH_HEAD


git branch -u

如果你想给小组权限,

sudo chmod g+w .git -R

对我来说是最好的。

对于MacOS

sudo chmod -R g+w .git

我得到这个,因为我有一个以上的用户帐户在我的盒子。我以用户A的身份登录,在用户B的目录中。用户A没有权限访问用户B的东西。当我意识到我不在文件系统中的位置时,这个错误就有意义了。

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

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

所以在总结中

  1. 到git的父目录

    $cd your path
    
  2. find group owner of the .git direcotry

    $ll .git
    
  3. add your user to that group

    $usermod -a -G yourusername ownergroupofgit
    
  4. Logout and login to system to this change take effect.

  5. Enjoy it ;)

如果你还没有将自己添加到拥有.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 pull期间写入.git/FETCH_HEAD之前,你需要注销并重新登录。

当.git文件夹被隐藏时,其中的所有文件也被隐藏。 只隐藏。git文件夹而不更新递归文件,它将工作

这招对我很管用:

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

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

当我在windows上使用git扩展时,我得到了这个消息。我的解决方案是简单地关闭git扩展,然后以管理员身份再次打开

试试这样吧,

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

$ whoami

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

sudo chown -R ubuntu .git/

这个错误的原因可能是多重的,但在我的情况下,我更新了根分支,然后当我试图更新它与普通用户它给我错误。

尝试两种解决方案,其中一种应该对你有效

1- sudo chmod g+w .git -R

如果它不工作,请尝试下一个解决方案,希望它能解决你的问题

2 - rm -f .git/FETCH_HEAD

如果在Windows服务器上发现同样的问题,则需要运行具有足够权限的命令行,例如管理员权限。

简单地找到你的根文件夹并运行这个命令:

chmod a+rw .git/FETCH_HEAD

就我而言,

sudo chmod ug+wx .git -R

此命令有效。

当你没有给.git文件夹足够的权限时,会出现这个问题。 解决这个问题-

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

    sudo chmod a+rw .git -R

    李< /引用> < / >

希望能有所帮助!!

使用实例设置当前用户的权限

$ sudo chown -R <username> .git/

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

sudo chown -R $(whoami) ./

我遇到了完全相同的错误,但在我的情况下,这个问题是在升级到PHP版本后重新构建Apache的结果。长话短说,我忘了安装Apache模块“suexec”。

这与集团或所有权无关。我只用了两天就想明白了,有人朝我开枪…

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

对于MacOS用户(如果是High Sierra或更高版本)使用这个:

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

我只是在命令之前写了sudo:

sudo npm run deploy

这里有很多答案,很多建议做咀嚼。 对我来说,将user改为拥有该文件夹的用户(在我的例子中是tomcat)要容易得多,因为所有者可以这样写: sudo su tomcat 然后做一个 git pull 无需更改权限。我更喜欢这样,因为我不需要记得在我完成后更改权限

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

注意:不要给所服务的文件夹非sudo写访问权限!

错误:不能打开。git/FETCH_HEAD:权限被拒绝

这对我来说很有用:

  1. 默认情况下。git文件夹是隐藏的。
  2. 取消隐藏。git文件夹及其子文件夹和文件,并尝试拉请求。

当我在做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

我已经遵循了在这里的步骤,并更新了我的bash_profile以添加rbenv垫片。

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

但不知什么原因,我把它们删掉了。一旦我取消注释,我就能够成功地运行bundle install

使用这个命令,它对我有用。

sudo chown -R $USER:。

参考:https://techoverflow.net/2019/05/07/how-to-fix-git-error-cannot-open-git-fetch_head-permission-denied/

sudo chmod -R 777 .git或者如果你想为自己添加rw权限,你可以使用sudo chmod -R +rw .git

我的问题是Ubuntu命令行。

在以root用户登录后,我设法解决了这个问题。

sudo su
git pull

删除.git文件中的FETCH_HEAD将解决这个问题。