2012-11-09 115 views
2

我正试图部署我的本地仓库到远程目录。我在这个远程目录中运行了git init --bare,并且使用git remote add server ssh://[email protected]:2222/path/to/repo将正确的ssh路径添加到了本地git repo分支(名为dev)。为什么我的git推送到HostGator共享主机失败?

当我运行git push server dev我得到以下的输出:

Counting objects: 44, done. 
Delta compression using up to 8 threads. 
Compressing objects: 100% (37/37), done. 
Writing objects: 100% (44/44), 89.58 KiB, done. 
Total 44 (delta 2), reused 27 (delta 2) 
error: Could not read 551dd5c5d67e3b2da4074d8f15a59a324a063a03 
fatal: Failed to traverse parents of commit 0615b940c3247e3547de1379ab09a4a6bb614252 
error: Could not read 551dd5c5d67e3b2da4074d8f15a59a324a063a03 
fatal: Failed to traverse parents of commit 0615b940c3247e3547de1379ab09a4a6bb614252 
To ssh://[email protected]:2222/path/to/repo 
! [remote rejected] dev -> master (missing necessary objects) 
error: failed to push some refs to 'ssh://[email protected]:2222/path/to/repo' 

我不知道这到底是怎么回事。

+1

'git fsck'对你的本地存储库有什么看法? – cdhowie

+0

谢谢,我仍然在学习git的基础知识。我悬挂提交,我认为这是造成这个问题。这对我来说是一个新鲜的回购,所以我简单地删除它并从头创建一个新的回购和开发分支。 –

+1

悬挂提交不会成为问题,它们只是未引用的提交 - 将在稍后清理的垃圾。如果你的一个提交引用了一个不存在的父提交,那么会有什么关系。 – cdhowie

回答

3

正如“git repository failed to traverse parent error”中所述,这也可能是由浅层克隆引起的。

在你的情况,虽然(测试回购),从头开始是最容易的。

一般情况下,你有有趣的建议在this thread

1.使用 “git rev-list --objects” 找出40aaeb204dc了。

如果不工作:

2.运行 “git fsck --full”,与包装完好。这将需要一段时间。
结果将包括缺失对象的列表(如40aaeb204dc),最重要的是它们的类型。

以下howto/recover-corrupted-blob-object.txt可用于识别损坏的松散物体。