致命:推送到远程仓库时对象已损坏

时间:2012-05-24 11:39:36

标签: git gitolite

我已经安装了一台带有Gitolite的服务器来托管我的存储库我昨天创建了一个新的存储库,今天当我尝试将更多提交推送到我得到的服务器时:

fatal: object 86eeaa0c5a154ff3df34d6a43669930b9c6c7f59 is corrupted
error: unpack failed: unpack-objects abnormal exit
error: failed to push some refs to

由于repo很新,我不会因为丢失以前的提交而烦恼所以我删除了我的本地和远程仓库,但仍然遇到同样的错误。

正如我所说,我不太关心维护我的提交历史,我只想让它再次运作!

1 个答案:

答案 0 :(得分:5)

正如评论中所见,任何额外的回购在创建过程中都会出现问题(即,当使用gitolite-admin文件推回gitolite.conf个文件并声明新的回购时,将其推回去。

  

之前我没有注意到这一点,但是当我创建一个新的repo时,我收到以下错误:

remote: line 1 too long: command="/home/git/gitolite/src/gitolite... 
remote: FATAL: fingerprinting failed for /tmp/Cdug9Itivq 
  

但它正在/home/git/repositories

中创建回购

此操作发生在名为ssh-authkeys的编译后触发器中:

sub fp_file {
    return $selinux++ if $selinux; # return a unique "fingerprint" to prevent noise
    my $f = shift;
    my $fp = `ssh-keygen -l -f '$f'`;
    chomp($fp);
    _die "fingerprinting failed for '$f'" unless $fp =~ /([0-9a-f][0-9a-f](:[0-9a-f][0-9a-f])+)/;
    $fp = $1;
    return $fp;
}

这意味着ssh-keygen -l -f <path_to_public_key.pub>没有遵循正确的模式,如“self service key management”所示。

确保您的密钥生成如下:

ssh-keygen -t rsa -f "${H}/.ssh/git" -C "Gitolite Admin access (not interactive)" -q -P ""

2015年4月更新:

正如starfryGitolite - remote: FATAL: fingerprinting failed for 'keydir/'所提及的那样:

  

OpenSSH版本6.8中的密钥指纹格式发生了变化:

     

FingerprintHash选项添加到ssh(1)sshd(8),并将等效的命令行标记添加到其他工具以控制用于关键指纹的算法。默认值从MD5更改为SHA256,格式从十六进制到base64。

     

指纹现在有前面的哈希算法   新格式的一个示例:

SHA256:mVPwvezndPv/ARoIadVY98vAC0g+P/5633yTC4d/wXE
  

请注意,可视主机密钥也会有所不同。

     

自2015年3月18日以来latest git checkout of gitolite is aware这种新格式。