Git push无法访问github:无法读取对象

时间:2011-09-21 00:17:30

标签: ruby-on-rails git merge github fetch

故事:

我一直在台式机和笔记本电脑上开发RoR-app。提交对另一个进行的更改非常方便,将它们推送到github并获取& amp;合并到其他地方。

起点是这样的:我在桌面上提交了最新的更改,将它们推送到github,然后将它们合并到我的笔记本电脑中。然后,我在笔记本电脑上做了一些提交并推送到github。进行更改,合并到我的桌面(使用--no-ff)。然后,发生了所有恶作剧的可能来源:我将桌面恢复到最新获取之前的位置。合并。做了一些开发工作,承诺,推送到github。在笔记本电脑中,我也做了恢复工作,虽然我将它恢复为一个提交,它在github的最新提取之间,再次获取并合并它们。恢复台式机和笔记本电脑后出现了一些错误信息,但事情仍然相当顺利,我一直在两台机器上工作。

直到现在。我试图从我的笔记本电脑推送到github,它提供了以下输出:

 Counting objects: 106, done.
 error: unable to find 5a2a4ac...
 error: unable to find bc36923...
 error: unable to find ecb0d86... 
 error: unable to find f76d194...
 error: unable to find f899df7...
 Compressing objects: 100% (64/64), done.
 fatal: failed to read object 5a2a4ac... : Invalid argument
 error: failed to push some refs to 'git@github:username/repo.git'

那么,问题是,究竟发生了什么?

编辑:似乎因为暂停我的笔记本电脑并将其从一个地方移动到另一个地方以某种方式搞砸了硬盘驱动器。 fsck输出不可用,因为我们解决了问题并继续工作,但是IIRC的一些分支和提交都悬空,包括git无法读取的提交。 - Teemu

2 个答案:

答案 0 :(得分:5)

我遇到过这类问题。

我不是花费数小时试图解决和修复这些问题,而是通常采用我想要的代码,将其复制到新目录中,删除.git文件,然后为它创建一个新的github,然后像往常一样连接两个。

虽然这可能不是你提出的细节的具体答案,但我发现git / github问题可以通过多种方式发生,而不是希望我现在是'git expert'(它正在发生但是这需要时间),我做了以上操作并继续我的实际应用程序开发。

答案 1 :(得分:1)

您遇到的问题是您正在尝试读取不属于“树”的对象。他们存在,但他们已经成为孤儿。但是,git允许您将一个项目合并到另一个项目,因此这是一种可以在不重新启动的情况下保留提交的方法,如下所示:

  1. git remote add -f somename git://somegitplace.com/user/some.git

  2. git merge -s ours --no-commit somename / master

  3. git read-tree --prefix = ext / somename -u somename / master

  4. git commit -m'external merge'

  5. git pull -s subtree somename master

  6. 希望有所帮助。如果没有,请告诉我,我们可以再次攻击它