我已经在使用Linux的计算机上创建了裸仓库,也将其克隆到了本地仓库(在同一台计算机上),并且可以毫无问题地进行推/拉。
在装有Windows的工作站上,我已经通过ssh使用ssh克隆了该存储库git clone ssh://user@linuxhost/srv/git/repo.git
,现在无法执行任何操作。Git给了我以下错误:
error: remote unpack failed: unable to create temporary object directory
To ssh://linuxhost/srv/git/repo.git
! [remote rejected] master -> master (unpacker error)
error: failed to push some refs to
'ssh://user@linuxhost/srv/git/repo.git'
没有找到解决我问题的正确答案,或者答案太复杂了,难以理解。我是新手,不熟悉Linux和配置自己的gitserver。
提前致谢
error: remote unpack failed: unable to create temporary object directory
从字面上看,这意味着当git创建一个临时目录以将您的更改复制到其中以进行进一步处理时,操作系统不允许这样做。
具体来说,作为推送过程的第一步,git希望创建一个目录.git/objects/incoming-XXXXXX
,其中XXXXXX是唯一的随机标识符。这就是失败的原因。
造成这种情况的最常见原因可能是存储库目录的安全权限不允许您正在使用SSH的用户对其进行写操作,或者磁盘已满。
要验证磁盘空间,请在Linux主机上运行df -h
并确认git repo所在的文件系统没有显示出高Use%和低可用块数。也可以尝试在与git repo相同的位置简单地制作一个测试文件。
要验证权限,请cd
访问远程托管git存储库的目录,然后运行ls -l
。请注意拥有该文件的用户和组,以及该用户和/或组是否具有写权限。要验证用户groups $USER
所在的组,请在$ USER是用户名的地方运行。
如果权限是问题,则可能必须更改git存储库的所有权:
chown -R user:group srv/git/repo.git
或者,您可能需要调整SSH用户的组成员身份:
usermod -a -G gitgroup user
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句