261

请帮助我,我正在尝试在我的终端中运行它:

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

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

4

32 回答 32

252

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

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

于 2012-11-02T13:09:09.127 回答
170

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

转到您的项目文件夹:

chown -R youruser:yourgroup .git/
于 2012-11-02T13:10:24.323 回答
55

如果您想授予该组的权限,

sudo chmod g+w .git -R

最适合我。

对于 MacOS

sudo chmod -R g+w .git 
于 2015-03-23T18:07:19.877 回答
33

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

于 2012-11-02T13:10:26.783 回答
31

在我的情况下工作正常:

rm -f .git/FETCH_HEAD

git branch -u
于 2015-03-23T09:07:22.470 回答
26

像这样试试

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

$ whoami 

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

sudo chown -R ubuntu .git/
于 2018-05-15T16:32:21.600 回答
24

此问题的答案确保 .git/FETCH_HEAD 具有写入权限,您将一切就绪。

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

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

于 2014-12-22T22:54:56.670 回答
12

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

于 2014-03-11T18:42:44.597 回答
11

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

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

于 2014-07-24T15:17:14.373 回答
10

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

$ sudo chown -R <username> .git/

于 2019-07-11T12:31:33.487 回答
10

如果您还没有将自己添加到拥有 的组中.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_HEADgit pull.

于 2016-07-03T01:26:33.437 回答
10

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

sudo chown -R $(whoami) ./
于 2019-10-11T12:45:22.033 回答
6

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

于 2015-06-20T17:52:33.460 回答
6

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

chmod a+rw .git/FETCH_HEAD
于 2018-11-02T10:57:58.157 回答
3

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

须藤 chown -R $USER: .

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

于 2021-09-29T17:52:25.390 回答
3

这对我有用:

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

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

于 2017-09-30T17:14:02.467 回答
2

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

尝试两种解决方案,一个应该适合你

1- sudo chmod g+w .git -R

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

2 - rm -f .git/FETCH_HEAD
于 2018-07-03T06:04:01.830 回答
2

错误:无法打开 .git/FETCH_HEAD:权限被拒绝

这对我有用:

  1. 默认情况下 .git 文件夹是隐藏的。
  2. 取消隐藏 .git 文件夹及其子文件夹和文件并尝试拉取请求。
于 2020-12-24T06:07:43.343 回答
2

当 .git 文件夹被隐藏并且其中的所有文件也被隐藏时遇到了这个问题。仅隐藏 .git 文件夹而不更新递归文件,它将起作用。

于 2016-11-18T13:41:04.587 回答
2

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

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

    sudo chmod a+rw .git -R

希望能帮助到你..!!

于 2019-05-12T10:23:43.677 回答
2

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

所以在夏天

  1. 转到 git 的父目录

    $cd your path
    
  2. 查找目录的组.git所有者

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

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

  5. 好好享受 ;)

于 2016-01-11T06:17:31.717 回答
1

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

于 2019-11-25T20:11:55.090 回答
1

我在为 windows 使用 git 扩展时收到此消息。我的解决方法是简单地关闭 git 扩展,然后以管理员身份再次打开

于 2018-03-07T07:36:38.257 回答
1

就我而言,

须藤 chmod ug+wx .git -R

这个命令有效。

于 2018-11-30T04:48:48.487 回答
1

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

它与团体或所有权无关。这才花了我两天时间才弄明白,有人开枪打死我……

于 2019-11-07T05:17:02.397 回答
1

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

sudo chown -R $(whoami) $(brew --prefix)/*
于 2020-04-19T07:07:31.070 回答
1

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

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

注意:不要对所服务的文件夹授予非 sudo 写入权限!

于 2020-09-08T15:43:59.713 回答
0

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

于 2015-05-07T21:17:36.520 回答
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

我已经按照这里的步骤更新了我bash_profile的添加rbenv垫片。

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

但由于一些未知的原因,我让他们评论了。一旦我取消注释,我就能够bundle install成功运行。

于 2021-04-26T19:23:50.970 回答
0

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

于 2022-01-27T20:11:34.730 回答
0

如果你在windows server中发现同样的问题,那么你需要以足够的权限运行命令行,比如管理员权限。

于 2018-10-28T03:57:10.260 回答
-1

在我的情况下工作:我刚刚sudo在命令之前写了:

sudo npm run deploy
于 2020-06-29T09:42:39.870 回答