Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Git推送到github失败:读取对象失败_Ruby On Rails_Git_Github_Merge_Git Fetch - Fatal编程技术网

Ruby on rails Git推送到github失败:读取对象失败

Ruby on rails Git推送到github失败:读取对象失败,ruby-on-rails,git,github,merge,git-fetch,Ruby On Rails,Git,Github,Merge,Git Fetch,故事: 我一直在我的台式机和笔记本电脑上开发RoR应用程序。提交在另一个服务器上所做的更改、将它们推送到github并在另一个服务器上获取和合并是非常方便的 起点是:我在桌面上提交了最新的更改,将它们推送到github,然后获取并合并到我的笔记本电脑中。然后,我在笔记本电脑上做了一些提交,并推送到github。接受更改,合并到我的桌面(没有ff)。然后,发生了所有错误的可能来源:我将桌面恢复到提交在最新的获取和合并之前的位置。利用它进行了一些开发工作,承诺并将其推送到github。在笔记本电脑中

故事:

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

起点是:我在桌面上提交了最新的更改,将它们推送到github,然后获取并合并到我的笔记本电脑中。然后,我在笔记本电脑上做了一些提交,并推送到github。接受更改,合并到我的桌面(没有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文件,然后为其创建一个新的github,然后像往常一样连接这两个文件


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

您遇到的问题是,您试图读取的对象不是“树”的一部分。他们存在,但却成了孤儿。但是,git允许您将一个项目合并到另一个项目,因此这是一种不用重新启动即可保持提交的方法,如下所示:

  • git远程添加-f somenamegit://somegitplace.com/user/some.git

  • git merge-s ours——不提交somename/master

  • git读取树——前缀=ext/somename-u somename/master

  • git提交-m“外部合并”

  • git pull-s子树somename主节点


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

    git fsck报告了什么?也许这一条有帮助:你说的“恢复”是什么意思?git revert意义上的“还原”是指进行一次新的提交,该提交会撤消一些其他提交,但保留完整的历史记录。如果您需要这方面的具体帮助,请提供在两个站点上执行的命令的实际顺序。如果你搞砸了你已经推到github回购的历史,那就是你的糟糕。看。同意,这要容易得多,有时我甚至想为它创建一些简单的脚本。这是最好的方法!如果你定期承诺进行远程回购,那么在本地进行中断就没有那么困难了。