You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CentOS执行git add -A提示磁盘空间不足,但剩余空间充足求助

解决CentOS下git add -A提示"No space left on device"但磁盘有剩余空间的问题

这个问题我碰到过好多次,根本不是你项目所在磁盘的空间不够——大概率是Git临时文件用的分区(默认是/tmp)空间耗尽,或者inode被占满了。下面是一步步排查和解决的方法:

1. 检查/tmp分区的空间与inode使用情况

Git执行add操作时会在临时目录创建大量缓存文件,如果/tmp是单独挂载的小分区(很多CentOS系统默认会给/tmp分配几个GB的空间),很容易被占满。

  • 查看/tmp的剩余空间:
    df -h /tmp
    
  • 查看/tmp的inode使用情况(有时候空间够但inode用完,也会报同样错误):
    df -i /tmp
    

2. 清理或扩容/tmp分区

如果发现/tmp满了:

  • 优先清理Git相关的临时文件(安全且直接):
    sudo rm -rf /tmp/git-*
    
  • 清理/tmp中超过24小时的旧文件(不会误删正在使用的文件):
    sudo tmpwatch 24 /tmp
    
  • 如果/tmp分区本身太小,考虑扩容:
    • 若用LVM管理,直接扩展逻辑卷即可;
    • 也可以修改/etc/fstab,将/tmp挂载到项目所在的大分区(比如/mnt/bigdisk/tmp),记得先创建目录再重新挂载。

3. 全局检查inode使用情况

如果/tmp没问题,那可能是整个系统的inode被耗尽了(比如项目里有几十万甚至上百万个小文件):

df -i

找到inode使用率100%的分区,清理该分区内的无用小文件(比如缓存、日志、临时文件)。如果是项目目录的inode满了,看看有没有可以批量删除的冗余文件(比如node_modules、vendor这类可以重新生成的目录)。

4. 指定Git使用其他临时目录

如果不想动/tmp,可以让Git直接用你有大量空间的目录作为临时目录:

  • 临时生效(当前终端会话):
    export GIT_TMP_DIR="/path/to/your/large/disk/tmp"
    mkdir -p $GIT_TMP_DIR
    git add -A
    
  • 永久生效(加到你的shell配置文件):
    echo 'export GIT_TMP_DIR="/path/to/your/large/disk/tmp"' >> ~/.bashrc
    source ~/.bashrc
    

5. 检查是否有大文件导致临时文件膨胀

虽然你的项目只有500MB,但如果其中包含几个单个几十MB甚至上百MB的大文件,Git在处理时会生成体积不小的临时文件。这种情况可以用Git LFS来管理大文件,避免临时文件占满空间:

# 安装Git LFS
sudo yum install git-lfs
# 初始化并跟踪大文件
git lfs install
git lfs track "*.zip" "*.iso"  # 替换成你的大文件后缀
git add .gitattributes
git add -A

内容的提问来源于stack exchange,提问作者Glen Elkins

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:19:49