git rebase - git在设备上没有剩余空间



我执行了git pull—rebase,我得到了以下错误:

 error: file write error (No space left on device)
 fatal: unable to write sha1 file 
 fatal: unpack-objects failed

我的设备上有很多空间。不知道为什么会显示这个错误。

第一次出现这个错误

硬盘空间不足。从机器上的任何地方删除一些未使用的文件。在你做了一些大扫除之后,你可能会考虑运行git gc,让git垃圾收集你的存储库;如果您最近对git的对象做了很多更改——就像在重基时可能发生的那样——您可以从git本身回收重要的数据。在给git一些喘息的空间之后(因为gc在工作时需要一点回旋的空间来将数据复制到新文件中),git gc将在不丢失存储库历史的情况下尽可能地压缩git存储库。

与其说这是一个答案,不如说是对问题的澄清,以及问题实际上可能是什么。我发现,当我的Windows 8.1系统和驱动器上有足够的空间时,GIT会定期吐出这种类型的错误代码。

在运行5次并在任务管理器中检查内存后,我发现每次系统内存接近最大限制时都会触发此错误。它与可用的磁盘空间无关,所以虽然@Matt的答案在某些情况下可能是正确的,但并非对所有情况都是正确的。

Task Manager报告GIT使用的内存比例很低,但是每次GIT运行它都会增加使用的内存。这个问题似乎与GIT中的内存泄漏有关。

我在推送到远程时也有类似的错误,实际上这不是由于我的本地机器没有足够的空间,而是在Git服务器上。

请检查完整的错误,例如我得到:

Failed to write to log, write /var/log/gitlab/gitlab-shell/gitlab-shell.log: no space left on device

告诉我错误来自gitlab-shell,而不是git

在另一个答案上加上:

每次GIT运行时,它都会增加所使用的内存。这个问题似乎与GIT中的内存泄漏有关。

Git 2.20(2018年第四季度)的重点是消除Git中已知的最后一次内存泄漏,在reff -filter代码路径中堵塞少量内存泄漏。

参见commit f0062d3, commit deec6b8, commit 23941dd (18 Oct 2018) by Olga Telezhnaya (telezhnaya)。
(由juno C Hamano—gitster—在commit 9d00100,2018年10月30日合并)


Git 2.24(2019年第四季度)修正"for-each-ref";(朋友们表明,裁判没有保护自己不受古代标签的侵害)当被要求记录标签者的名字时,他们没有记录显示";%(taggername)"。

见commit 8b3f33e (17 Aug 2019) by Mischa POSLAWSKY (shiar)。

(由juno C Hamano - gitster -在commit a477abe, 2019年9月9日合并)

ref-filter:初始化空的name或email字段

在Git的v0.99等无头标签上设置$(taggername)会导致SIGABRT错误"munmap_chunk():无效指针",因为在提交f0062d3的疏忽(ref-filter: free item->value和item->value->s, 2018-10-19, Git v2.20.0- r0)。

在我的例子中,.gitconfig被存储在一个网络位置,它基本上保留了我的机器的所有配置文件,因此,如果PC坏了,公司可以在新硬件上恢复相同的配置。无论如何,这个网络驱动器空间不足,所以git无法更新文件。你可以增加网络驱动器空间,或者直接断开网络驱动器,git将使用主驱动器上的本地配置。

我在使用Git bash控制台时遇到了这个问题。通过使用windows控制台那里没有更多的问题。我可以克隆存储库。

在我的例子中,是远程设备耗尽了空间,而不是本地机器。因此,如果您的本地机器有足够的空间,也许您应该检查远程机器。

对于我来说,这个问题通过更改分支名称来解决最初,我是从错误的分支,这是不存在于我的GitLab,所以也许你是使用错误的分支名称拉我的代码。

我通过在我的桌子上做空间来解决我的问题,如果你的桌子满了,它会给出这样的错误。

最新更新