无法将远程 git repo 从一台机器推送到局域网中的另一台机器

无法将远程 git repo 从一台机器推送到局域网中的另一台机器

我已经在我的 Linux 机器上创建了裸仓库,并将其克隆到本地仓库(在同一台机器上),并且我可以毫无问题地推送/拉取。

在我的 Windows 工作站上,我已使用 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 还很陌生。

提前致谢

答案1

error: remote unpack failed: unable to create temporary object directory

这意味着,当 git 想要创建一个临时目录来复制你的更改以进行进一步处理时,操作系统不允许它这样做。

具体来说,作为推送过程的第一步,git 想要创建一个目录,.git/objects/incoming-XXXXXX其中 XXXXXX 是一个唯一的随机标识符。这就是失败的原因。

最常见的原因是存储库目录的安全权限不允许您通过 SSH 访问的用户对其进行写入,或者磁盘已满。

要验证磁盘空间,请在 Linux 主机上运行df -h并确认 git repo 所在的文件系统未显示较高的使用率,可用的块数也较低。还可以尝试在与 git repo 相同的位置创建一个测试文件。

要验证权限,cd请转到远程托管 git 存储库的目录,然后运行ls -l。请注意拥有该文件的用户和组,以及用户和/或组是否在此处具有写入权限。要验证您的用户所在的组,请运行groups $USER$USER ,其中用户名为。

如果问题在于权限,您可能必须更改 git 存储库的所有权:

chown -R user:group srv/git/repo.git

或者您可能需要调整 SSH 用户的组成员身份:

usermod -a -G gitgroup user

相关内容