写入我要提取的文件时,Git 给了我“权限被拒绝”错误

Posted

技术标签:

【中文标题】写入我要提取的文件时,Git 给了我“权限被拒绝”错误【英文标题】:Git gives me a "Permission Denied" error when writing files that I am pulling 【发布时间】:2012-03-01 07:34:03 【问题描述】:

在我的 Windows 机器上,当我提取我的仓库时,我得到:

error: unable to crate file <path to file> (Permission denied)

我认为问题可能是当我查看文件夹的属性时,复选框内有一个正方形,我将其清除,以便没有文件或文件夹是只读的。

在按下确定并检查 Windows 是否应用了我的更改后,我又看到了方块!

我怎样才能让 Git 或 Windows 允许我获得我的提交?

【问题讨论】:

有时因为 windows 不提供 lsof,所以无法确定 windows 保持打开哪些文件。所以它是重新启动 Windows 的一种方法。 【参考方案1】:

关闭 Windows UAC 似乎可以解决问题。

【讨论】:

【参考方案2】:

使用 Run As Administrator 运行 Git Bash 或正在运行的控制台

【讨论】:

我在 C 的主目录中安装了 composer.phar。这可以运行:bash composer.phar self-update 确保没有其他应用打开了您项目中的文件。 有趣 - 原来这是问题所在。我已经以管理员身份打开了命令窗口,但由于某种原因,它不再被授权。我再次以管理员身份关闭并重新打开命令提示符,它起作用了。 我不赞成 Volodymyr 的回答,因为出于多种原因,您不必以管理员身份运行 git 命令!如果你必须这样做,事情就错了。就我而言,按照 Volodymyr 的建议,关闭几个打开的窗口解决了这个问题。 请解释为什么你应该“以管理员身份运行”【参考方案3】:

检查是否有其他应用程序正在使用您的文件并将其终止。在我的情况下,它是 grunt,一直在关注变化和构建项目。丢弃文件时,给了我和你一样的信息。

它是怎么发生的?当我切换到另一个分支时,一些不存在的文件出现在我的工作副本中。我无法丢弃它们,也无法在文本编辑器中打开它们。

【讨论】:

Sublime Text 在这里引起了这个问题。您可以使用按路径过滤的 Microsoft Process Monitor(google it)来查看在结帐期间哪些进程对文件进行了错误处理。 在我的情况下,Visual Studio 代码导致了这个问题。停止后一切正常。 使用 Windows 10,我在第二台显示器上打开了一个资源管理器窗口...【参考方案4】:

我在中止变基后遇到了这种错误。原来有一个孤立的git 进程正在锁定.git 目录中的文件。

否则a script from this answer 也可能有用。

【讨论】:

【参考方案5】:

Windows 10 上的 Git Bash。该文件不是只读的,所以我关闭了 bash 窗口并再次打开它,它工作正常。

【讨论】:

【参考方案6】:

在我遇到同样问题的情况下,是另一个程序( Atom )阻止了文件。关闭它有帮助。

所以检查是否有任何其他程序,代码编辑器正在使用相同的文件,如果是 - 将其关闭。

【讨论】:

你是怎么知道的?是否有任何命令显示主文件被任何进程阻止? Same here- 我知道它是 Atom 的原因是因为我关闭了所有其他应用程序,直到我也关闭了 Atom,问题才得到解决。我相信 Atom 对导致问题的 PC 上的文件系统做了一些意想不到的事情。【参考方案7】:

像我一样添加这个,以上答案都不起作用:如果您安装了它,请检查 Bitdefender 设置(或您拥有的其他安全软件)。它使用受保护的文件夹进行操作,并可能阻止任何操作文件的尝试。例如,当使用 git bash 时,rm、vim 等命令都算作单独的命令,并且需要单独的权限 - 不仅是 bash.exe 本身。

【讨论】:

以上是关于写入我要提取的文件时,Git 给了我“权限被拒绝”错误的主要内容,如果未能解决你的问题,请参考以下文章

上传文件时Django的权限被拒绝错误

Apache 说打开文件读取时出错:权限被拒绝

尝试使用 FileLock、Python 写入文件时权限被拒绝

写入日志文件时Laravel 5权限被拒绝

Jenkins Build Execute Shell - 文件权限被拒绝

Ruby -FileUtils 创建目录,Windows 上的权限被拒绝问题