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

Git推送报错unable to write to objects file的排查与解决

GitLab推送代码报错:Permission denied(unable to migrate objects to permanent storage)

推送代码到GitLab远程仓库时,反复出现如下权限错误:

Enumerating objects: 65, done.
Counting objects: 100% (65/65), done.
Delta compression using up to 6 threads
Compressing objects: 100% (47/47), done.
Writing objects: 100% (51/51), 371.34 KiB | 2.12 MiB/s, done.
Total 51 (delta 8), reused 0 (delta 0), pack-reused 0
error: unable to write file ./objects/05/de8428bbcb5425404f91296abd457eb8e99ff4: Permission denied
To ssh://gitlab:2222/path/repo.git
 ! [remote rejected] dynamic-components -> dynamic-components (unable to migrate objects to permanent storage)
error: failed to push some refs to 'ssh://gitlab:2222/path/repo.git'

最初判断为本地问题,但无法复现触发条件,多次尝试本地操作均无效。

环境信息

  • Windows 10
  • GitHub Desktop 3.0.8
  • GitLab 15.3.3

已尝试的本地排查方案

  • 以管理员身份运行GitHub Desktop
  • 在Windows CMD中分别用普通用户和管理员身份执行推送
  • 检查本地.git/objects/目录权限

最终解决步骤

  1. 登录GitLab服务器,切换到仓库存储目录:
cd /var/opt/gitlab/git-data/repositories/@hashed
  1. 查找归属为root用户的文件:
find . -user root

输出显示仓库的部分objects文件/目录归属为root:

./c6/f3/c6f3ac57944a531490cd39902d0f777715fd005efac9a30622d5f5205e7f6894.git/objects/3f
./c6/f3/c6f3ac57944a531490cd39902d0f777715fd005efac9a30622d5f5205e7f6894.git/objects/3f/eb0ea1ce53b0b5ef2e8b3bff1be8ee3177f2ed
./c6/f3/c6f3ac57944a531490cd39902d0f777715fd005efac9a30622d5f5205e7f6894.git/objects/05
./c6/f3/c6f3ac57944a531490cd39902d0f777715fd005efac9a30622d5f5205e7f6894.git/objects/05/7a46674746185781dc454df4e9f850222c7010
./c6/f3/c6f3ac57944a531490cd39902d0f777715fd005efac9a30622d5f5205e7f6894.git/objects/00
./c6/f3/c6f3ac57944a531490cd39902d0f777715fd005efac9a30622d5f5205e7f6894.git/objects/00/e25f2e05f216e53f7934f756fd33fcaa49e33e
./c6/f3/c6f3ac57944a531490cd39902d0f777715fd005efac9a30622d5f5205e7f6894.git/objects/13
./c6/f3/c6f3ac57944a531490cd39902d0f777715fd005efac9a30622d5f5205e7f6894.git/objects/13/d1489f9d3a110495e46b88206f2bdb53404b9a
  1. 将这些文件/目录的归属修改为git用户(GitLab默认运行用户):
chown -R git:git ./c6/f3/c6f3ac57944a531490cd39902d0f777715fd005efac9a30622d5f5205e7f6894.git/objects

修改完成后,重新推送代码即可成功。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 02:25:37