PC崩溃导致GIT Rebase操作中断。现在存储库不可用

时间:2014-10-03 11:49:45

标签: git windows-7 git-extensions

我的存储库中有2个分支。其中任何一个都没有任何未提交的更改。

我拉了branch1,检查了branch2,并在branch1上启动了branch2 rebase 在工作中,我的电脑崩溃了。

在它最终启动之后,我打开GitExtensions以发现我的存储库是完全空的,我看到闪烁的'rebase under way'或类似的东西,我点击它然后它弹出我需要选择的窗口修复冲突,这不应该发生。如果我单击“解决”,它将打开一个窗口,其中应显示冲突的文件,当然没有。

我尝试点击abort rebase,但它说该文件夹为not a git repository or any of the parents

从那以后我就什么都不做了。我无法中止,看不到提交。打开git bash只是告诉我/some/path/to repo/repo name ((...) | REBASE )

当我写git status时,它说它不是存储库。

嗯,我不会那么关心失败的rebase但是我注意到我的所有源文件都转向了二进制文件,这意味着,我的未经删除提交很少,除非你们可以提供帮助我恢复了。

我想改变分支并推动它....这令人沮丧。

编辑1:

.git目录位于存储库目录(/some/path/to_repo/repo_name/.git)中。 当重新应用branch2提交时,PC崩溃了。这意味着branch1提交已经应用于branch2,唯一剩下的就是完成应用branch2提交。并且在应用10或20次提交后崩溃了。

我现在已经比较了克隆回购的崩溃的.git可能性和崩溃的回收。

克隆回购有这些文件夹:

信息
日志
对象
裁判
这些文件:
配置
说明
HEAD
指数
填充参

坠毁的文件夹有一个名为rebase-apply的额外文件夹,还有额外的文件:
COMMIT_EDITMSG
FETCH_HEAD
ORIG_HEAD

其他一切似乎都匹配。我没有深入到文件夹。并没有尝试比较文件内容。

1 个答案:

答案 0 :(得分:14)

检查.git目录文件后,我注意到ORIG_HEAD和HEAD文件只包含NULLS。看来我终于想出了如何解决这个问题。

  1. 已删除index个文件。
  2. 已删除ORIG_HEAD个文件。
  3. 已删除HEAD文件。
  4. 制作FETCH_HEAD(它指向Branch1)
  5. 的副本
  6. 将副本重命名为HEAD
  7. 已打开GIT Bash
  8. 导航到存储库目录。
  9. Ran git status检查它是否看到该目录是存储库。 (确实如此)
  10. 执行git reset命令。
  11. 执行git rebase --abort命令。
  12. 此时,所有二进制源文件都是文本文件。此外,index文件已重新创建。

    当我通过GitExtensions打开存储库时,在rebase之前,一切似乎都恢复正常。我再次尝试了rebase,但是在其中一个提交中停止了,并且出现了错误 error: unable to unpack d447b241eba771f175cb2150eec77ec605a86486 header error: inflateEnd: stream consistency error (no message) fatal: d447b241eba771f175cb2150eec77ec605a86486 is not a valid object

    1. 我将存储库(从本地GIT服务器)克隆到另一个文件夹。
    2. 将已恢复存储库中的源文件复制到新克隆的存储库中。
    3. 检查它显示我所做的所有更改都是正确的,没有任何提交丢失。
    4. 将所有更改提交为1次提交(哦)。
    5. 推。
    6. 多数民众赞成。现在又一次工作了。似乎我没有对它造成任何损害。