git/repo/path 上的致命错误: fsync 错误

9

我会尽力帮助您解决问题:

当我在空目录中尝试拉取克隆现有代码库时,出现错误信息:

$ git clone https://bitbucket.org/path_to_repo/aroma
Cloning into 'aroma'...
remote: Counting objects: 1335, done.
remote: Compressing objects: 100% (1174/1174), done.
remote: Total 1335 (delta 618), rReecused 551 (deltea 72)
Receiving objects: 100% (1335/1335), 43.16 MiB | 3.78 MiB/s, done.
Resolving deltas: 100% (618/618), done.
fatal: fsync error on 'H:/Project/testrep/aroma/.git/objects/pack/tmp_pack_xqHCKb': Bad file descriptor
fatal: index-pack failed

我尝试在配置文件中设置pack.windowMemory大小和pack.packSizeLimit等参数,但仍然出现相同的错误;[之前我可以克隆存储库,但是现在出了些问题。


fsync() 操作确保文件数据已成功写入稳定存储(参见http://pubs.opengroup.org/onlinepubs/9699919799/functions/fsync.html或之前的http://pubs.opengroup.org/onlinepubs/9699919799/functions/fsync.html)。如果失败,则意味着文件系统不再运行,即您的 H: 驱动器已损坏。 - torek
那么,其他仓库就会定位到neighbor,并且可以很好地进行拉取和推送。 - Adobe
我不理解那个评论,但如果你有什么能证明服务器本身(运行H:驱动器的那个)没问题的东西,那么“损坏”的部分在逻辑上必须与客户端和/或客户端连接服务器有关。 - torek
附近存在的存储库具有成功的拉取和推送命令。 - Adobe
也许你的网络驱动器上的磁盘空间(或磁盘配额)已经用完了? - torek
你找到任何解决方案了吗? - Wiki
4个回答

2

检查以下情况是否仍然存在问题:

  • 使用最新版本的Git for Windows,
  • 在本地磁盘上(使用C:\而不是H:\
  • 从常规CMD Windows shell会话中运行(而不是git bash

根据H:\驱动器的性质,您可能无法访问/更新文件。

所以其他存储库位于相邻位置,它们可以很好地进行拉取和推送。

如果其他存储库在H:上正常工作(即您可以在H:上克隆/推送/拉取这些存储库),请尝试将有问题的存储库复制到另一个文件夹,并尝试从该文件夹克隆它。如果仍然失败,则表示其中某些内容已损坏:现在是时候应用git fsck来检查它了。


注意:从Git 2.42(2023年第三季度)开始,您现在可以使用现有的trace2工具来了解更多关于fsync事件的信息。
请参见commit a27eece(2023年7月20日),作者为Beat Bolli(bbolli
(由Junio C Hamano -- gitster --合并于commit 52d9dc2,2023年8月2日)

wrapper:使用trace2计数器收集fsync统计信息

签名:Beat Bolli

此线程所述,应该使用trace2计数器来计算事件,而不是临时静态变量。

将两个fsync静态变量转换为trace2计数器,减少wrapper.c和trace2子系统之间的耦合。
调整t/t5351以匹配trace2计数器的输出格式。

这些计数器不是针对每个线程的,因为被替换的计数器也不是。


我尝试使用命令行窗口,但是我得到了相同的错误。我不能使用C盘,因为它是SSD。你知道,我有两台电脑,它们都有相同版本的git。但是一台电脑有这个问题,而另一台没有。git版本为2.8.1。 - Adobe
@Adobe 你可以尝试使用Git 2.11.0.rc3吗? - VonC
@Adobe 你可以尝试使用另一个驱动器吗?(注意:我的所有驱动器都是固态硬盘,而且 git 在它们上面运行得很好) - VonC

-1

我在几个来自同一服务器的 Git 仓库中遇到了同样的问题。无法拉取,无法克隆。

重启我的工作站后,问题消失了。


-2

确认 Git 的配置已完成,使用以下命令进行检查。

$ git config --list

如果您看不到任何内容,请使用命令设置配置。
$ git config --global user.name "Your Name"
$ git config --global user.email "youremail@yourdomain.com"

请再次确认

$ git config --list

-2

我认为问题出在你创建ssh密钥时忘记添加它了。 ssg-add ~/.ssh/id_rsa。 然后将你的密钥复制到github上,然后使用以下命令检查是否一切正常。 ssh -T git@github.com。 如果你看到成功提示,那么你就设置好了。


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