解决git push操作的时候出错,提示 error: unpack failed: unable to create temporary object directory

一、问题描述

刚刚在敲完某个模块的代码,提交代码到那么本地分支,然后push到远程分支的时候,出现了下面的错误,提示我Push rejected。然后没有其他的提示了。

使用 git bash 终端,输入git push 命令,也提示被拒绝

DH207891+OuyangPeng@DH207891 MINGW32 /d/GitLab Source/XTCWatch_TalentAccount/XTCWatch (feature/TalentAccountWatchChangeAssistant)
$ git push
Counting objects: 59, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (51/51), done.
Writing objects: 100% (59/59), 7.13 KiB | 0 bytes/s, done.
Total 59 (delta 43), reused 0 (delta 0)
error: unpack failed: unable to create temporary object directory
To 172.28.xxx.xxx:Android/PhoneApp/XTCWatch.git
 ! [remote rejected]       feature/TalentAccountWatchChangeAssistant -> feature/TalentAccountWatchChangeAssistant (unpacker error)
error: failed to push some refs to 'git@172.28.xxx.xxx:Android/PhoneApp/XTCWatch.git'

二、解决问题

1、查看.git目录权限

提示: unable to create temporary object directory

无法创建临时目录,看样子应该是权限问题,怀疑是.git文件夹写权限问题。

我去查看了下远程服务器上的协议权限如下所示:

root@ubuntu4146:/data/gitlabData/repositories/Android/PhoneApp# ll
total 32
drwxrwx--- 8 git git 4096 10月 31  2017 ./
drwxrwx--- 9 git git 4096  6月  7 15:00 ../
drwxrwx--- 6 git git 4096 11月 15  2017 Document.git/
drwxrwx--- 6 git git 4096 10月 31  2017 Document.wiki.git/
drwxr-xr-x 6 git git 4096  8月  3 16:47 XTCWatch.git/
drwxrwx--- 6 git git 4096 12月  6  2017 XTCWatchI18N.git/
drwxrwx--- 6 git git 4096  8月 14  2017 XTCWatchI18N.wiki.git/
drwxrwx--- 6 git git 4096  8月 14  2017 XTCWatch.wiki.git/
root@ubuntu4146:/data/gitlabData/repositories/Android/PhoneApp# 

发现 XTCWatch.git的权限变成了 drwxr-xr-x 6 git git 4096 8月 3 16:47 XTCWatch.git/,

表示权限的10个字符用于确定不同用户能对文件干什么

第一个字符代表文件(-)、目录(d),链接(l)
其余字符每3个一组(rwx),读(r)、写(w)、执行(x)

第一组rw-:文件所有者的权限是读、写,但是不能执行

第二组r-x:权限是读、执行,但是不能写

第三组r-x:权限是读、执行,但是不能写

也可用数字表示为:r=4,w=2,x=1 因此rwx=4+2+1=7

因此,我们push所以会失败就是因为我们没有权限进行写。

总结
出现git push 失败,提示 : unable to create temporary object directory 。肯定是远程服务器对应的仓库权限不够了。至于为什么会权限不够的原因可能有很多种,需要根据实际情况去判断。这一次我遇到问题是因为GitLab服务器的磁盘已经没有了,导致无法进行写文件操作。

其他读者遇到此问题,可以仅仅参考,然后自己去解决实际问题。如果你不是git服务器的管理员之类的,可以尝试联系管理员来解决!

留下评论