我在我的代码库里有两个分支。它们都没有未提交的更改。
我拉取了branch1,切换到branch2,并开始在branch1上对branch2进行重新基础操作。
在工作中途,我的电脑崩溃了。
最终启动后,我打开GitExtensions发现我的代码库完全为空,我看到闪烁的'rebase under way'
或类似的东西,我点击它,它弹出了一个窗口,让我选择解决冲突,这本不应该发生。如果我点击“解决”,它会打开应该显示冲突文件的窗口,当然没有冲突文件显示。
我试图点击放弃 rebase
,但它说该文件夹不是git仓库或任何父级。
从那时起,我什么都做不了。我不能放弃,也不能查看提交记录。打开git bash只告诉我/some/path/to repo/repo name ((...) | REBASE )
当我写git status
时,它说这不是一个仓库。
好吧,我不会过于在意失败的rebase,但我注意到我的所有源文件都变成二进制文件了,这意味着,除非你们能帮我恢复,否则我的未推送提交就丢失了。
我想重新基础分支并推送它...这很令人沮丧。
编辑1:
.git
目录在代码库目录中(/some/path/to_repo/repo_name/.git
)。这是应该的。
电脑在重新应用branch2提交时崩溃了。这意味着branch1的提交已经被应用到了branch2,唯一剩下的就是完成应用branch2的提交。在大约应用了10或20个提交后它崩溃了。
现在我已经比较了克隆的代码库和崩溃的代码库的.git目录。
克隆的代码库有以下文件夹:
hooks
info
logs
objects
refs
以及以下文件:
config
description
HEAD
index
packed-refs
崩溃的一个有额外的文件夹名为rebase-apply
,还有额外的文件:
COMMIT_EDITMSG
FETCH_HEAD
ORIG_HEAD
其他的似乎都匹配。我没有深入进入文件夹,也没有尝试比较文件内容。
HEAD
不存在,则在rebase过程中HEAD
将包含一个原始的SHA-1值,可能包含一个损坏的值,或者根本没有值? 在这种情况下,放置一个有效的HEAD
可能会让你到达下一步。 - torek