git推送错误:包对象因奇怪的错误而死亡

git推送错误:包对象因奇怪的错误而死亡,git,Git,一段时间以来,我一直在成功地推动回购协议,它开始给我以下错误,不知从何处,知道为什么会发生吗 Ishaqs-Mac:source ishaq$ git push Counting objects: 68, done. Delta compression using 2 threads. Compressing objects: 100% (50/50), done. Connection to SERVER closed by remote host. error: pack-objects d

一段时间以来,我一直在成功地推动回购协议,它开始给我以下错误,不知从何处,知道为什么会发生吗

Ishaqs-Mac:source ishaq$ git push
Counting objects: 68, done.
Delta compression using 2 threads.
Compressing objects: 100% (50/50), done.
Connection to SERVER closed by remote host.
error: pack-objects died with strange error
error: failed to push some refs to 'SERVER:PROJECT.git'

感谢您的时间和帮助。

请查看以下几点:

  • 推送端的磁盘空间问题(如$GIT\u DIR或$TMP\u DIR中的“磁盘空间不足”)

  • 权利问题(在哪个账户下执行流程?)

  • 平台特定问题:在Mac OS上,您可以有一个

  • 推送端的git与远程站点上的git版本不同(例如,如果您尝试在远程对等端推送子模块,而git二进制文件不知道子模块,您可能会遇到类似的问题)

注意:因为是一个,所以请检查
git-pack
是否仍然有效

static void pack_objects(int fd, struct ref *refs)
{
    for (;;) {
        int status, code;
        pid_t waiting = waitpid(pid, &status, 0);
        if (waiting < 0) {
            if (errno == EINTR)
                continue;
            return error("waitpid failed (%s)", strerror(errno));
        }
        if ((waiting != pid) || WIFSIGNALED(status) ||
            !WIFEXITED(status))
            return error("pack-objects died with strange error");
        code = WEXITSTATUS(status);
        if (code)
            return -code;
        return 0;
    }
}
static void pack_对象(int-fd,struct-ref*refs)
{
对于(;;){
int状态,代码;
pid_t waiting=waitpid(pid和状态,0);
如果(等待<0){
如果(errno==EINTR)
继续;
返回错误(“waitpid失败(%s)”,strerror(errno));
}
如果((等待!=pid)| | WIFSIGNALED(状态)||
!已婚(身份))
返回错误(“打包对象死于奇怪错误”);
代码=WEXITSTATUS(状态);
if(代码)
返回码;
返回0;
}
}

注之二:最近有一些案例显示此错误消息(2009年1月下旬)

不幸的是,错误消息没有多大帮助。但你的问题不是来自Git pack;第一条错误消息来自OpenSSH,它能够访问远程服务器但未登录:

Connection to SERVER closed by remote host.
这不是密码问题(有不同的错误消息),但可能是权限问题(比如没有适当权限的组,我偶尔会在OSX上看到)或无法识别的帐户名(在某些系统上,此报告有密码问题)或超时。您可以尝试从命令行登录:

$ ssh username@servername
去发现你有什么样的问题。您还可以尝试修复权限;OS X似乎特别容易受到反复出现的权限问题和从奇数组运行的影响


旁注——既然您在Leopard上,我建议您安装,它管理SSH身份,并将自动将您的SSH密码存储在系统密钥链中。它不会帮助您解决当前的问题,但可能会防止将来出现类似的问题。

如果您碰巧使用了gerrit之类的代码审查工具,并且您在尝试推送代码时发现了这一点,这可能是因为java程序通常在内存管理方面非常出色。你不会在互联网上找到任何能帮助你的人,除非你在绝望中决定杀死gerrit并重新启动它。然后砰的一声,你的问题消失了。。。直到几天后,您需要重新启动gerrit以解决同一问题


Java太棒了。

我在Mac OS X 10.5 Leopard上,Git版本为1.6.2,我的repo中最大的文件在里面。Git/objects/pack-r--r--r--1 ishaq staff 8.1M Apr 5 18:20 pack-7feb0b56fcf48eb328f0d4f1a734064d15f9051c.packThanks,-我已经通过安装程序安装了Git(不是Mac端口)我还能有这个MacPorts特定的问题吗存储库拥有与其他所有repo相同的权限-服务器拥有1.5.4,但如果这是问题所在,它应该在-git repack工作之前就存在了-git repack fine我只是将repo克隆到另一个位置,并尝试推送,它工作正常。不知道现有副本有什么问题,它有7,8个本地提交,所以我不能丢弃它:(嗨,Paul,我已经安装了keychain,我可以通过我的密钥登录到我的服务器:-)已克隆到其他位置,它允许我从那里推送。尝试创建补丁并将其应用到该位置,但没有成功,今天我从OfficeInterest中推送了它,结果出现了空白错误。我不知道这是如何导致这些错误消息的,但正如我所说的,这些错误消息没有多大帮助。恭喜你解决了这个问题。不,正如我所说的,当我从家以外的任何地方(办公室、咖啡馆等)推车时,唯一让我感到困扰的是,它工作得很好。不在家工作。我不喜欢java。