在执行git pull命令时出现错误:无法打开.git/FETCH_HEAD:权限被拒绝。

18

我需要帮助!!

当我尝试完成 git pull 操作时,出现以下错误信息:

C:\Jenkins\Repo> git pull error: cannot open .git/FETCH_HEAD: Permission denied

这台机器运行的是 Windows Server 2008 r2 操作系统,并且我们使用 ssh 进行身份验证。

我们已经尝试了以下几种方法:检查当前用户是否对 FETCH_HEAD 文件具有正确的读/写权限,事实上它确实具有该权限,还检查了用户在仓库根目录上设置的正确权限。

我尝试加载我的私钥(我知道它百分之百可以正常工作并具有针对所讨论仓库的权限),但仍然遇到相同的问题... 所以从我对 git 的了解来看,我认为这更像是一个 Windows 问题。

我也进行了大量的谷歌搜索!

如果您有任何其他想法或需要检查的内容,请提供帮助!


5
你是否有一个名为FETCH_HEAD的文件?你能删除它吗?(运行fetch命令会重新创建它。)可能是另一个程序正在使用它,导致git无法重新创建它。 - Edward Thomson
8个回答

23

在我升级到Windows 10后,出现了这种情况。虽然我的用户是管理员,管理员对根仓库文件夹具有完全访问权限,但我的用户并没有被明确列出。我添加了具有完全控制权限的用户,问题得以解决(在我遇到Outlook拒绝读取PST文件直到我执行同样操作之前也遇到过相同的问题)。

所以,对于我来说,解决方案如下:

  • 右键单击文件夹,选择属性
  • 安全
  • 编辑
  • 添加
  • 输入我的用户名
  • 在允许下选中完全控制
  • 确定,确定

8

在Windows 10上,以下方法适用于我:

1. go to the repo folder 
2. right click on the .git folder and choose the last option - properties
3. on the general tab uncheck hidden checkbox if checked
4. hit apply and then ok

现在尝试使用git fetch或git pull命令,应该可以正常工作。

2
天啊!我花了将近两天的时间来检查这个问题的复杂解决方案(身份验证更改,命令行操作等),而这个真正简单的操作似乎解决了它! - P. Mergey
我在我的下载文件夹中工作,发现我必须清除只读属性才能运行git pull。在线快速搜索显示,Windows病毒和威胁防护具有受控文件夹访问功能,将文件夹保持为只读状态。当其他杀毒软件(如企业控制的杀毒软件)接管时,甚至无法进行配置。似乎整个下载文件夹都被任何浏览器以外的写入所控制。 - eel ghEEz

3
这是一个相当普遍的问题。我遇到过很多次,几乎所有的情况都与访问git存储库所需的正确权限和SSH密钥有关。
您可能需要将用户设置为存储库的所有者(授予用户完全访问权限)或将存储库克隆到其他目录中。
您可以使用以下命令设置写入权限: 进入您的文件夹 chown -R youruser:yourgroup .git/ 还要尝试取消隐藏 .git 文件夹。

嗨,Anantha Raju C,感谢您回复我。这是在Windows系统上,所以我尝试了chown -R的Windows版本,即takeown /R /D Y /F *,但没有任何效果。 - craig Rickett
@craig Rickett 这可能会帮助您接管该仓库 http://serverfault.com/a/27339/308384 - Anantha Raju C

2
在我的情况下,这是因为我手动隐藏了.git文件夹(通常它会自动隐藏),但我忘记了。我尝试编辑安全性,但没有效果。所以我只需显示.git文件夹并解决问题。希望对某些人有所帮助。

2

我的电脑在更新了Windows系统之后出现了这个问题。请尝试以下步骤:

  1. 右键单击文件夹 -> 属性
  2. 在常规选项卡下,有两个复选框:隐藏和只读 -> 取消勾选“隐藏”复选框,并单击“应用”按钮
  3. 在安全选项卡下 -> 编辑 -> 添加用户 -> 应用
  4. 给您的用户授予完全访问权限

这样就可以解决问题啦!


0

只需删除文件夹,然后重新克隆即可。


这有点不清楚...也许需要指定应该在再次克隆之前删除哪个文件夹? - Michael Sims
只需删除整个项目文件夹,然后再克隆即可。 - Chuancey

0
我所做的是在存储库内以管理员权限打开 PowerShell / 命令提示符,然后我能够拉取 / 获取 / 合并和推送。

0

这个问题也可能是由于Jenkins保留其Git操作的缓存引起的。我尝试了chown文件,以为它们是导致问题的原因,我还完全删除了工作区。

在删除%ProgramData%\Jenkins\.jenkins\workspaces\MY-BUILD*之后,我仍然收到完全相同的错误消息。

%ProgramData%\Jenkins\.jenkins\caches中,我删除了所有内容,但您可能只需删除git-<HEX_ID>git-<HEX_ID>@tmp文件夹,然后重试相同的检出。这对我解决了问题,因为Jenkins被迫重新创建工作区和缓存中的.git文件夹,然后权限就正确了。

步骤:

  1. 删除有问题的作业的工作区文件夹
  2. 删除Git缓存
  3. 重试作业

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