git pull 时无法统计错误

Posted

技术标签:

【中文标题】git pull 时无法统计错误【英文标题】:Error cannot stat upon git pull 【发布时间】:2016-09-06 06:38:37 【问题描述】:

我尝试使用以下命令从远程分支执行 git pull:

$ git pull origin branch_name
username@private_repository's password:
From ssh://private_repository/path/project
 * tag               branch_name       -> FETCH_HEAD
error: cannot stat 'path/name/of/file': Permission denied
error: cannot stat 'path/name/of/file': Permission denied

但我收到以下错误:

error: cannot stat 'path/name/of/file': Permission denied 
error: cannot stat 'path/name/of/file': Permission denied

有谁知道这意味着什么,我能做些什么?

谢谢

【问题讨论】:

这可能是因为本地文件是使用某些应用程序或您的编辑器打开的。并检查本地目录的权限 对我来说,Visual Studio(IDE) 锁定了文件,所以无法拉取。 这取决于你在哪里看到这个。有两个相同的错误消息权限被拒绝意味着可能有两个文件在某处打开,git pull 无法覆盖它们,因为它们在某处打开。这发生在我的 Atom.io 身上。我以dev 分支打开了文件,然后我签出了master,它还不是最新的,其他人将dev 合并到master,我希望它是最新的,但是因为我仍然打开了这些文件,但出现了同样的错误。关闭文件使其工作。希望对你有帮助。 【参考方案1】:

对于那些工作的人:

IntelliJ 理念 Visual Studio 记事本++

关闭解决方案可能会解决此错误。 IDE 的 git 工具可能仍保留有问题的文件。

【讨论】:

同样,我遇到了同样的问题,解决方案是关闭通过“文件夹作为工作区”选项打开文件夹的 Notepad++。看起来下面的大多数答案都是关闭任何引用文件的程序并再次拉取的基本解决方案的变体。 现代 IDE 需要支持 Git! (也就是说,请确保您使用的 .gitignore 不会保存不必要的 IDE 文件... :-)) 我也遇到了同样的问题,在后台打开 git-bash 会紧贴文件并阻止分支切换。 Textpad 也可以添加到此列表中。这对我来说是罪魁祸首,尽管当时我没有打开该项目的任何文件。 phpStorm 和 Atom 相同的问题和解决方案。【参考方案2】:

我已经开始使用 Atom 并发现它是问题所在。需要刷新 Atom 文件树并解决 git 问题。

【讨论】:

【参考方案3】:

我在使用 Atom 时反复遇到这个问题,每次关闭 Atom 都为我解决了这个问题。使用可能受拉取影响的文件关闭任何应用程序。

【讨论】:

【参考方案4】:

我对这个错误有不同的解决方案。我一直在使用 atom.io 作为我的开发工具。我想放弃我最近的试用工作(通过git clean -df,然后是git checkout -- .)当我这样做时,Atom 的目录树中显示了一些剩余的空目录。

当我尝试检查 git 中的替代分支时,那些空目录正在生成 error: cannot stat 'path/name/of/directory': Permission denied。真是令人沮丧。

解决方法是在目录树中简单地单击 Atom 中的目录,它们会立即“噗”地消失。一旦它们消失了,git中就没有更多的错误了。

【讨论】:

很高兴我们使用相同的编辑器,现在我正在交替使用 atom、smartgit for ui 和 git shell。 很奇怪。我也使用 atom 并且在今天之前从未遇到过这个问题,做了一个正常的 git pull 并得到了导致我来到这里的错误......退出 atom 成功了! +1 奇怪的是,我第一次遇到这个问题,并且我已经使用同一个 repo 与 Atom 一起使用了一年。我刚刚从 GitKraken 切换到 SourceTree -> SourceTree+Atom 似乎是问题所在:如果您在切换分支时让 atom 打开,此问题再次发生【参考方案5】:

我遇到了同样的问题,我发现的方法是重新启动我的代码编辑器关闭了与项目(Atom)和我的 git GUI(SourceTree)相关的所有文件。之后,您可以更改分支。

【讨论】:

你救了我这个! Atom 阻止我使用分支,关闭它解决了它【参考方案6】:

解释很简单——您对 git 文件和存储库的权限存在安全问题。 您需要有权限才能从 git 中提取文件。

如果目录权限为 755 (rwxr-xr-x),包括所有父目录,任何人都可以列出目录内容。

但是你不能,所以这通常意味着完整的目录路径没有 755 权限。这也意味着所有的父目录都必须有 +x 权限。

【讨论】:

这不是正确答案,通常是文件权限问题,而不是安全问题。可能其他程序正在锁定 git 试图访问的文件(IE Visual Studio、Atom、VS Code、另一个 shell。)在 Visual Studio 中,您会找到“重新加载/重新加载解决方案”对话框,选择其中任何一个都可以解决此问题。请参阅其他 cmets 以获得对此的支持(@TomBowers、@Brucelerner 等)【参考方案7】:

在我的情况下,是 Windows 资源管理器阻止了 de 文件。我用任务管理器重新启动它(鼠标右键单击,重新启动),问题就消失了。

【讨论】:

这里也一样。我只是关闭了所有资源管理器窗口和命令行界面,错误就消失了。【参考方案8】:

Angular CLI 也可以阻止您的文件。因此,请确保您停止运行 ng serve。

【讨论】:

【参考方案9】:

我的解决方案与上述大多数情况相似:

我关闭了 Visual Studio Code, 关闭所有打开的文件资源管理器窗口, 确保我的 bash/powershell 窗口都没有打开该目录。

这仍然对我不起作用。我结束了:

签出不同的分支, 重新检查我试图拉出的分支。

这一次我运行 git pull 时它成功了。

【讨论】:

【参考方案10】:

当我尝试在项目的两个分支之间切换时遇到了这个问题。它发生的原因是 git 试图访问在我的代码编辑器中打开的文件。 我以管理员身份运行我的编辑器,然后切换到另一个分支。有效。 我希望它可以帮助那里的人!

【讨论】:

【参考方案11】:

对我有用的是在管理员模式下运行 sourcetree 和 Visual Studio

右键单击图标(sourcetree 或 Visual Studio),您应该会看到一个选项“以管理员身份运行”

或者转到特定应用程序的属性,然后在选项卡快捷方式中选择高级并勾选选项“以管理员身份运行”

【讨论】:

【参考方案12】:

是的,所以我刚到这里并为 Visual Studio 用户提供了一个简单的修复方法。

如果您签出一个分支,但没有将 Visual Studio 设置为焦点,它将临时锁定文件。

单击 VS 并允许它重新加载项目文件后,您应该可以再次拉取...这里出现用户错误

【讨论】:

【参考方案13】:

我在做了git pull --all 之后得到了这个

git pull 解决了这个问题

我认为问题的根源在于服务器上的一些分支已被删除。

【讨论】:

【参考方案14】:

您的 git 环境设置不正确。

Repos 应该归用户 git 所有。所以用户 git 应该接受你的公钥。

不确定您在这里使用的是什么后端,因此添加密钥的方法会有所不同。

【讨论】:

【参考方案15】:

我有 npm run watch 用于 VueJS 在后台进程中运行,我忘记了导致 git 在从存储恢复时阻止任何更改。所以要注意这一点!

【讨论】:

【参考方案16】:

我关闭了项目所在的 Visual Studio Code,但问题仍然存在:错误:无法统计,权限被拒绝。

然后我看到 grunt 正在运行,所以我关闭了 grunt 并再次检查并解决了问题!

【讨论】:

以上是关于git pull 时无法统计错误的主要内容,如果未能解决你的问题,请参考以下文章

git pull 上的 Git 错误(无法更新本地参考)

git pull 错误“请求的 URL 返回错误:访问时 503”

尝试在 webhook 触发后在服务器上运行 git pull,但无法正常工作

git无法pull仓库refusing to merge unrelated histories

IDEA中使用Git拉取代码时报 Git pull failed原因及处理方法

问题解决方案git无法pull仓库refusing to merge unrelated histories