Git推送失败-unpack-objects异常退出

问题描述 投票:0回答:13

我正在使用远程 git 存储库。我成功提交了我的文件,现在我正在尝试 将其推至流媒体。

操作失败并显示此消息:

git.exe push --progress  "origin" master:master

error: unpack failed: unpack-objects abnormal exit
error: RPC failed; result=18, HTTP code = 200

我在 Windows 7 上使用 TortoiseGit 客户端。

为什么我会收到此消息?如何从这种状态恢复?

git version-control
13个回答
38
投票

如果您的 git 存储库是自托管的,请检查远程 git 目录的文件系统权限。如果它被损坏,您的 git 服务器可能没有权限。

例如,我在 Ubuntu 服务器上托管自己的 gitosis 系统。当我在服务器上创建 git 存储库时,我运行

sudo git init --bare <repo name>
然后我必须运行
sudo chgrp -R gitosis <repo name> && sudo chown -R gitosis <repo name>


28
投票

根据this文章

git repack remote/origin/master
可能会在您的本地存储库损坏时有所帮助。要检查您是否可以尝试将远程存储库克隆到新目录并从中测试推送。


8
投票

当遥控器上没有剩余空间时也会出现这种情况,请尝试释放一些空间。


1
投票

检查远程/源存储库的权限。它们可以被 git 用户写入吗?如果没有,您将收到此错误。比如:

chown git_user.git_user -R /path/to/repo/your_funky_repo

应该可以在 *nix 系统上解决问题。如果您的遥控器在 Windows 上,我确信您可以运行等效的东西。


1
投票

当我设置一个新的远程服务器并使用我的

root
用户(而不是我的个人用户帐户)创建远程 git 存储库/文件夹时,我遇到了这个问题。通过删除 git 存储库并使用我的个人帐户重做它们解决了问题。现在一切都按预期进行。


0
投票

当我将 git 从 VPN 更改为 https 连接时,我遇到了同样的问题。

我的 git 存储库发生了一些事情,我无法再推送,但拉取仍然有效。我也尝试了

git -repack remote/origin/master
的解决方案,但仍然是同样的问题。

为了解决这个问题,

I just made a new clone from my repo with the new connection
并且能够使用已知的推送方法。我真的不知道为什么这不能通过 git -repack 解决,但通过这种方式它肯定有效!

我猜想当我将访问方法更改为 https 时,服务器的 VPN 远程设置不适合。

希望这有帮助。


0
投票

还要检查您的磁盘是否已满。几分钟前我在我的一台 VPS 上遇到了同样的问题。


0
投票

在 Windows 上,唯一对我有用的修复方法是从我的 .gitconfig 文件中删除以下行:

[credential]
helper = !'C:\\Users\\YourNameHere\\AppData\\Roaming\\GitCredStore\\git-credential-winstore.exe'

一旦我这样做了,我手动推送一次(成功),然后将上述行添加回.gitconfig,一切正常。


0
投票

在我的(gitlab)服务器上,我需要首先 chown -R git:git repositories/ ,但 git repack 不起作用。当我使用 scp 将目标文件从本地存储库复制到服务器时,问题得到解决:

    scp .git/objects/0d/449dd91d8c20c1820d1284371b28637e08a0f3 root@server:/home/git/repositories/my/project.git/objects/0d/

0
投票

如果您使用 HTTP URL,则无法通过 HTTP 推送数据。 HTTP 用于只读访问。请改用 ssh。

执行

git remote -v
检查您的存储库 URL 是否为 HTTP URL。 您可以通过执行此操作来更改此 URL
git remote set-url origin ssh:user@server/dir/project.git

之后就可以push了!


0
投票

我使用“

git push —no-thin origin HEAD
”成功推送了它

有时候我们执行 git push 推送新分支到远程仓库时,会被远程仓库阻塞。

也许我们没有适当的权限。但是,当我在 git push 中添加

--no-thin
参数时,我可以将其推送上去。

但该命令可能会受到不同级别权限的影响,因此不保证一定会推送。但我这次推动成功了。


0
投票

就我而言,远程存储库是浅层克隆。我正在推送一个合并提交,该提交显然正在使用早于浅层存储库的最早提交的提交。

要解决此问题,您需要取消遥控器的浅度:


git fetch --unshallow


0
投票

我也有同样的问题。对我来说问题是另一边没有空间。

© www.soinside.com 2019 - 2024. All rights reserved.