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/目录权限
最终解决步骤
- 登录GitLab服务器,切换到仓库存储目录:
cd /var/opt/gitlab/git-data/repositories/@hashed
- 查找归属为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
- 将这些文件/目录的归属修改为
git用户(GitLab默认运行用户):
chown -R git:git ./c6/f3/c6f3ac57944a531490cd39902d0f777715fd005efac9a30622d5f5205e7f6894.git/objects
修改完成后,重新推送代码即可成功。
内容的提问来源于stack exchange,提问作者Nick
相关产品推荐
相关产品推荐

