【问题标题】:Git push fails to github: failed to read objectgit push 到 github 失败:读取对象失败
【发布时间】:2011-11-21 12:55:05
【问题描述】:

故事:

我一直在我的台式机和笔记本电脑上开发一个 RoR 应用程序。提交在另一个上所做的更改,将它们推送到 github 并在其他上获取并合并是非常方便的。

起点是这样的:我在我的桌面上提交了最新的更改,将它们推送到 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 未能读取的那个提交。 - 提姆

【问题讨论】:

  • git fsck 报告什么?
  • 也许这个有帮助:stackoverflow.com/questions/801577/…
  • “还原”是什么意思? git revert 意义上的“还原”是进行 new 提交,该提交撤消了其他一些提交,但完整的历史记录保持不变。如果您需要这方面的具体帮助,请提供您在两个站点上执行的实际命令序列。如果你搞砸了你已经推送到你的 github repo 的历史,那就是你的糟糕。见progit.org/book/ch3-6.html#the_perils_of_rebasing

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


【解决方案1】:

我遇到过这类问题。

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

虽然这可能不是对您提出的细节的具体答案,但我发现 git/github 问题可能有多种发生方式,而不是希望我现在是一个“git 专家”(它正在发生,但是这需要时间),我完成上述操作并继续我的实际应用程序开发。

【讨论】:

  • 同意,这样容易多了,有时我什至会考虑为它创建一些简单的脚本。
  • 这是最好的方法!如果您定期提交到远程仓库,那么在本地出现问题就不是那么难了。
【解决方案2】:

您遇到的问题是您正在尝试读取不属于“树”的对象。他们存在,但他们已经成为孤儿。但是,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 '外部合并'

  5. git pull -s subtree somename master

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

【讨论】:

    猜你喜欢
    • 2013-07-29
    • 2021-08-18
    • 2015-07-17
    • 2014-07-20
    • 1970-01-01
    • 2021-03-15
    • 2013-03-21
    • 2014-04-30
    • 2011-04-26
    相关资源
    最近更新 更多