我的存储库中有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但是我注意到我的所有源文件都变成了二进制文件,这意味着,我的未提交的提交都是LOST,除非你们可以帮我恢复它.
我想重新分支并推动它....这令人沮丧.
编辑1:
.git
目录在应用程序库目录(/some/path/to_repo/repo_name/.git
)中.当重新应用branch2提交时,PC崩溃了.这意味着branch1提交已经应用于branch2,唯一剩下的就是完成应用branch2提交.并且在应用了10或20次提交后崩溃了.
我现在比较了一个克隆回购的.git direcotries和一个崩溃的回购.
克隆的repo有这些文件夹:
hooks
info
logs
objects
refs
和这些文件:
config
description
HEAD
index
packed-refs
崩溃的文件夹有一个额外的文件夹rebase-apply
,也有额外的文件:
COMMIT_EDITMSG
FETCH_HEAD
ORIG_HEAD
其他一切似乎都匹配.我没有深入到文件夹.并没有尝试比较文件内容.
检查.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
我将存储库(从本地GIT服务器)克隆到另一个文件夹.
将已恢复存储库中的源文件复制到新克隆的存储库中.
检查它显示我所做的所有更改都是正确的,没有任何提交丢失.
承诺所有更改为1提交(哦).
推动.
而已.现在又一次工作了.似乎我没有对它造成任何损害.