【问题标题】:Git: fatal: fsync error on 'sha1 file': Bad file descriptorGit:致命:'sha1 文件'上的 fsync 错误:错误的文件描述符
【发布时间】:2017-12-21 17:23:02
【问题描述】:

我将 VS Code 与 Git 一起使用 - 它位于可移植位置 C:\_DEV\bin\git 中,并且还添加到 Windows PATH 中,因此无需遥控器即可正常工作。

我有一个 OneDrive _GIT 文件夹,其中有一些“远程”存储库,可在 2 台设备之间同步(有时,我将它放在那里主要用于备份目的)。

当我想提交更改时出现错误,“修复”此问题的唯一方法是重新启动计算机,所以我想找到一种正确修复它的方法。问题是,它并不总是出现,也不是针对所有存储库,它非常随机。

我认为这是因为与 OneDrive 同步。我可以运行一个命令来修复文件描述符吗?还是有其他办法防止?

git remote --verbose
git ls-tree -l HEAD -- a:\new\theme\assets\sass\main.scss
git show 97a333c5e7fce816dbb46a5c1235d69e61836726
git show HEAD:theme/assets/sass/main.scss
git add -A -- a:\new\theme\assets\sass\main.scss
fatal: fsync error on 'sha1 file': Bad file descriptor

【问题讨论】:

  • 正确的解决方案是不要将 Git 存储库存储在网络驱动器上。 (我并不想刻薄。这明确受支持的场景。)
  • 但这不是网络驱动器,它是我的本地驱动器,它已同步到 OneDrive 云存储..
  • 在该虚拟机中使用映射到虚拟机和 GIT 的本地驱动器时,我遇到了同样的问题。显然它是由 GIT 引起的,因为我不使用 VS Code。
  • 当主存储库在另一个工具中打开时,Visual Studio Code 也遇到了这个问题,例如Visual Studio 2019。尝试关闭Visual Studio 2019 看看是否能解决问题。
  • 你有那个@EdwardThomson 的来源吗?我找不到任何证据证明您的说法是真实的。

标签: windows git


【解决方案1】:

感谢@edward-thomson。
我在我的电脑上遇到了同样的问题,我将我的 homedrive 下的一个文件夹映射到 E:

C:\Users\myuserid\E-Folder\SomeGitProject

通过共享文件夹,所以我可以将其快捷方式到

E:\SomeGitProject

解决方案是使用 CMD 中的完整路径或使用 git bash 中的 homedrive 快捷方式:

~/E-Folder/SomeGitProject

我猜你的 A: 同样是一个共享,你可以使用完整路径访问它,可能也位于你的 homedrive 下的某个地方。

【讨论】:

  • 谢谢,经过长时间的测试,我发现 OneDrive 没有问题,但问题出在按照您的建议映射到驱动器的文件夹中。因此,现在我没有驱动器 A B Y,而是拥有文件夹 A_DEV、B_DEV、Y_DEV,功能相同,只是没有共享和驱动器..
【解决方案2】:

我最近经常遇到这个错误,上面的答案有所帮助,但另一件事似乎也导致它是 VS 本身在运行。

尝试关闭 VS,然后从资源管理器执行“Git Bash Here”并仅使用命令行。

完成后,您可以重新打开 VS。

【讨论】:

  • 我不断收到来自 Visual StudioSource Treefsync 错误。根据@Whelkaholism 的建议,我关闭了两个应用程序并通过 Git Bash 创建了提交。有效!仅供参考 - 这个命令不是一次提交一个文件,而是帮助:git add $(git rev-parse --show-toplevel)
【解决方案3】:

我还将我的根网站空间映射为驱动器。 在监视文件之前,这没有问题(例如使用 npm run watch)。

【讨论】:

  • 是的,这是可能的。我使用 Prepros 进行开发,因此项目文件夹被它不间断地监视.. 但我不再有这些问题了。我已使用 ThisPCTweaker 将我的“www”文件夹映射为自定义文件夹(它与“我的电脑中的下载”或“桌面”显示相同)
【解决方案4】:

为了帮助其他人比我更快地找到解决方案,我迟到了。真正的罪魁祸首是难以捉摸的,我尝试了从重新安装 GIT 到创建新存储库的所有方法。

这在 Windows 中发生在我身上,它在某处是 due to a change in permissions in a parent folder

解决方案是简单地disconnect and remap the folder

【讨论】:

  • 是的,映射驱动器时会出现问题。而不是映射驱动器,将其设置为“我的电脑”中的一个特殊文件夹,这样您就可以快速访问,而不会出现 git 问题
  • 我也遇到了同样的情况,错误消息是fatal: fsync error on 'loose object file': Bad file descriptor 可能的解决方案是更改父文件夹的所有权。
  • 就上下文而言,我的 Hyper-V VM 有一个映射到主机共享目录的驱动器。使用完全相同的设置(即SourceTree、存储在映射驱动器上的文件、BitBucket 帐户等)...RepositoryA 无需问题,RepositoryB 将在我暂存文件时生成fsync error解决方案: 断开和重新映射驱动器也对我有用。现在RepositoryARepositoryB 都可以工作了。
  • 在我上一篇文章后 5 分钟,fsync error 重新出现。我怀疑它可能与在同一存储库上同时运行 Visual StudioSourceTree 有关。过去我从来没有遇到过这个问题。
【解决方案5】:

我遇到了同样的问题。我刚刚通过以下步骤解决了这个问题:

1- 关闭可视化代码

2- 在 git bash 命令行上打开项目

3- 再次提交代码

【讨论】:

    【解决方案6】:

    重新启动 VS Code 即可。比断开和重新映射文​​件夹(这也有效)要容易一些。

    【讨论】:

    • 也许适合你,但绝对不适合我 :) 那是我尝试的第一件事......
    【解决方案7】:

    我在使用 Visual Studio 2017 时遇到了同样的问题。我的解决方案是关闭 Visual Studio,然后打开 Visual Studio CODE 并在那里合并文件。

    【讨论】:

      【解决方案8】:

      我也遇到了同样的问题。就我而言,问题是磁盘空间不足。希望这对某人有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-08
        • 2023-03-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多