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

一、问题描述

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

在这里插入图片描述

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

在这里插入图片描述

$ 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/XXXXX.git
 ! [remote rejected]       feature/TalentXXXXX -> feature/TalentXXXXX (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/XXX# ll
total 32
drwxrwx--- 8 git git 4096 10月 31  2017 ./
drwxrwx--- 9 git git 4096  6月  7 15:00 ../
drwxr-xr-x 6 git git 4096  8月  3 16:47 XXXX.git/

在这里插入图片描述

发现 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所以会失败就是因为我们没有权限进行写

2、查看为什么不能写的原因

我怀疑是不是系统磁盘不够用了,去查了下系统剩余磁盘。 好家伙,居然一点磁盘剩余空间都没有了。

root@ubuntu4146:/data/gitlabData/repositories/Android/XXXX# df -h 
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        28G   14G   13G  52% /
none            4.0K     0  4.0K   0% /sys/fs/cgroup
udev             32G  4.0K   32G   1% /dev
tmpfs           6.3G  1.8M  6.3G   1% /run
none            5.0M     0  5.0M   0% /run/lock
none             32G  4.0K   32G   1% /run/shm
none            100M     0  100M   0% /run/user
/dev/sda5       238G   60M  226G   1% /home
/dev/sdb        1.8T  1.8T     0 100% /data

在这里插入图片描述

如上图所示:/data目录磁盘已满,而gitlab的仓库就放在/data目录下。因此就无法进行写操作啦。

好吧,我去清理下垃圾数据,要保证磁盘可用。清理完后的磁盘剩余空间情况如下所示:

root@ubuntu4146:/data/gitlabData/repositories/Android/XXXX# df -h 
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        28G   14G   13G  52% /
none            4.0K     0  4.0K   0% /sys/fs/cgroup
udev             32G  4.0K   32G   1% /dev
tmpfs           6.3G  1.8M  6.3G   1% /run
none            5.0M     0  5.0M   0% /run/lock
none             32G  4.0K   32G   1% /run/shm
none            100M     0  100M   0% /run/user
/dev/sda5       238G   60M  226G   1% /home
/dev/sdb        1.8T  1.7T   91G  95% /data

在这里插入图片描述

清理完磁盘空间之后,我再进行push操作就可以使用了。

在这里插入图片描述

下午04:05分的时候,还是不能git push

下午 04:05 Push rejected: Push feature/XXXX to origin/feature/XXXX was rejected by remote

将GitLab服务器的磁盘清理完毕之后,下午04:47分的时候再次git push 即可成功了。

下午 04:47 Push successful: Pushed 157 commits to origin/feature/XXXX

总结

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

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


这里写图片描述

作者:欧阳鹏 欢迎转载,与人分享是进步的源泉!
转载请保留原文地址:https://blog.csdn.net/qq446282412/article/details/81431208

如果觉得本文对您有所帮助,欢迎您扫码下图所示的支付宝和微信支付二维码对本文进行随意打赏。您的支持将鼓励我继续创作

这里写图片描述

回答: 当出现 "git error: failed to push some refs to" 错误时,通常有几个可能的原因。首先,可能是因为你在提交之前没有将远程仓库的最新代码同步到本地,导致冲突。你可以通过先拉取最新代码,解决冲突并重新提交来解决这个问题。 [2另外,这个错误也可能是因为你在修改了线上文件或其他文件后没有进行本地库的同步。在使用commit将本地文件提交到github库时,会出现push失败的问题。你可以确保本地和远程仓库的同步,并重新提交代码来解决这个问题。最后,这个错误也可能是由于多人协作开发时,有人在你提交之前已经提交了代码,并且没有将他们的提交同步到你的本地库。这时,你需要先拉取最新的代码,然后再进行提交。希望这些解决方法对你有帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [解决git push错误failed to push some refs to的问题](https://blog.csdn.net/weixin_45392559/article/details/127022240)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [git提交代码报错 error: failed to push some refs to怎么办](https://blog.csdn.net/liuqingup/article/details/131439214)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [git push 报错failed to push some refs to‘xxx](https://blog.csdn.net/weixin_45811256/article/details/125989719)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

字节卷动

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值