Git错误:无法创建临时文件和构建树时出现错误但未提供更多信息?

9

我试图提交新的更改到我的仓库,但是遇到了以下错误:

error: unable to create temporary file: Invalid argument
error: unable to create temporary file: Invalid argument
error: Error building trees

当其他人遇到类似问题时,错误会指向导致问题的特定文件/对象,但在这里没有其他信息可用。

(尝试通过终端和cmd,适用于Windows 10)

3个回答

8
我找到了问题所在 - 项目文件夹与 OneDrive 同步时出现了错误,这导致 .gitobjects 文件夹中的一个文件损坏(The tag present in the reparse point buffer is invalid)。可以通过检查文件夹外观(对我来说,它是唯一带有蓝色 OneDrive 同步箭头而不是绿色勾的文件夹,且不能打开)来确定问题所在。另一种方法是将有问题的分支克隆到新文件夹中,进行微小更改(我创建了一个写有“test”的test.txt文件),推送到 git,然后返回到有问题的项目文件夹并尝试从 git 拉取新变更。此操作失败并指向了损坏的对象。
为了解决这个问题,我查阅了如何处理被 OneDrive 损坏的文件,最常见的建议是在命令提示符(以管理员身份运行)中运行chkdsk c: /r /f,当计算机重新启动时开始运行。请注意,这可能需要几个小时才能完成。

4

通用的Windows解决方案(在Windows 10和11上测试过):

我出现错误是因为似乎windows将文件夹设置为只读模式。

取消只读选项,然后点击应用和确定。

输入图片描述


0

Git 真的应该在这里打印路径,是的。错误似乎来自 object-file.c:write_loose_object(),在正常情况下会在 .git/objects 中创建一个临时文件。

EINVAL 的错误情况不应该发生,因为对象路径本身必须是有效的(否则它是怎么出现的?)并且生成的临时文件名只使用完全“安全”的字符。所以错误消息中缺少的filename.buf不应该首先出现。在您的情况下,错误确实出现了,而缺少的%s用于filename.buf意味着我们无法看到您的操作系统反对的路径。

你可以构建一个调试或私有版本的Git(添加缺失路径),以找出问题原因,或使用观察故障系统调用的任何系统调用跟踪工具。查明操作系统拒绝创建松散对象临时文件的原因,并纠正潜在问题。同时,你可能想要向Git邮件列表报告此问题。

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