我的存储库中有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
其他一切似乎都匹配。我没有深入到文件夹。并没有尝试比较文件内容。
答案 0 :(得分:14)
检查.git
目录文件后,我注意到ORIG_HEAD和HEAD文件只包含NULLS。看来我终于想出了如何解决这个问题。
index
个文件。 ORIG_HEAD
个文件。 HEAD
文件。FETCH_HEAD
(它指向Branch1)HEAD
GIT Bash
git status
检查它是否看到该目录是存储库。 (确实如此)git reset
命令。 git rebase --abort
命令。 此时,所有二进制源文件都是文本文件。此外,index
文件已重新创建。
当我通过GitExtensions打开存储库时,在rebase之前,一切似乎都恢复正常。我再次尝试了rebase,但是在其中一个提交中停止了,并且出现了错误
error: unable to unpack d447b241eba771f175cb2150eec77ec605a86486 header
error: inflateEnd: stream consistency error (no message)
fatal: d447b241eba771f175cb2150eec77ec605a86486 is not a valid object
多数民众赞成。现在又一次工作了。似乎我没有对它造成任何损害。