2014-10-03 27 views
5

我在我的存储库中有2个分支。他们中没有任何未提交的变化。GIT Rebase操作因PC崩溃而中断。现在存储库不可用

我拉了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它说它不是一个存储库。

嗯,我也不会很在乎失败重订,但我注意到,我所有的源文件变成二进制文件,这意味着,我的unpushed提交丢失,除非你们能帮助我恢复。

我想重新分支并推动它......这是令人沮丧的。

EDIT 1:

.git目录是在存储库目录(/some/path/to_repo/repo_name/.git),因为它应该的。 当分支2提交正在重新应用时,PC崩溃。这意味着branch1提交已经应用到分支2,唯一剩下的就是完成应用分支2提交。并且在应用了10次或20次提交之后崩溃了。

我现在已经比较了克隆回购的git direcotries和坠毁的gg direcotries。

克隆回购了这些文件夹:

信息
日志
对象
裁判
而这些文件:
配置
描述
HEAD
指数
填充裁判

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

一切似乎相匹配。我没有深入文件夹。并没有试图比较文件内容。

+1

.git目录在哪里?里面有什么?回购不应该被破坏,除非git在写入回购的过程中被中断(这种情况经常不会发生)。 – nneonneo 2014-10-03 11:52:39

+0

我已添加额外的信息作为编辑,请检查出来,并告诉我,如果我需要提供更多。 – user1651105 2014-10-03 12:04:47

+1

一般git说如果'HEAD'不存在。在rebase中间,HEAD会包含一个原始的SHA-1,也许它包含一个被破坏的SHA-1,或者根本没有?在这种情况下,将有效的“HEAD”放在适当的位置可能会使您接受任何下一步操作。 – torek 2014-10-03 12:49:55

回答

9

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

  1. 删除index文件。
  2. 删除ORIG_HEAD文件。
  3. 删除HEAD文件。
  4. 制成的FETCH_HEAD副本(它指向一个分支1)
  5. 更名拷贝到HEAD
  6. 开业GIT Bash
  7. 导航到库目录。
  8. 然后git status检查它是否看到该目录是存储库。 (它呢)
  9. git reset命令。
  10. git rebase --abort命令。

此时,所有的二进制源文件都是文本文件。还有index文件被重新创建。

当我通过GitExtensions打开仓库时,在rebase之前一切似乎都恢复正常。我试图变基一次,但是它停止在提交中的一个与
error: unable to unpack d447b241eba771f175cb2150eec77ec605a86486 header error: inflateEnd: stream consistency error (no message) fatal: d447b241eba771f175cb2150eec77ec605a86486 is not a valid object

错误
  • 我克隆库(从本地GIT服务器)到另一个文件夹。
  • 将已恢复存储库中的源文件复制到新克隆的源文件。
  • 检查它是否显示我所做的所有更改都是正确的,并且没有任何提交丢失。
  • 提交所有更改为1提交(哦,哦)。
  • 推。
  • 就是这样。现在它再次工作。似乎我没有对它造成任何损害。

    +0

    这只是救了我的命。 – 2016-09-01 23:36:19

    +0

    我的评论和Brian一样! Ufff没有足够的+1这个答案 – 2016-09-21 22:11:42

    +0

    你刚刚救了我的命。如果可以的话,我会给你+50。 – JNYRanger 2017-08-16 19:38:50