在 Windows 蓝屏后恢复 git 存储库?
recovering a git repo after a Windows blue screen?
我刚遇到蓝屏,我把上周左右的所有工作都藏起来了,但现在它不见了……好吧,我可以看到 .git
文件夹在资源管理器中,但做 git status or fsck
它说它不是 git 回购...这是 powershell
上的一个小游戏
PS C:\Users\tyoc\Documentos\wtf> git status
fatal: Not a git repository (or any of the parent directories): .git
PS C:\Users\tyoc\Documentos\wtf> cd .git
PS C:\Users\tyoc\Documentos\wtf\.git> git status
fatal: Not a git repository (or any of the parent directories): .git
PS C:\Users\tyoc\Documentos\wtf\.git> cd ..
PS C:\Users\tyoc\Documentos\wtf> git init
Reinitialized existing Git repository in C:/Users/tyoc/Documentos/wtf/.git/
PS C:\Users\tyoc\Documentos\wtf> git status
fatal: Not a git repository (or any of the parent directories): .git
PS C:\Users\tyoc\Documentos\wtf> git fsck --no-reflog
fatal: Not a git repository (or any of the parent directories): .git
PS C:\Users\tyoc\Documentos\wtf> git stash
fatal: Not a git repository (or any of the parent directories): .git
如果能把藏品拿回来就好了,因为幸运的是,repo 有一个中央存储库,所以那里一切都很好......但我的工作不是,如果我一个星期没做任何东西会怎么样... :S.
我添加这个是为了澄清:
蓝屏前的 repo 状态是我的工作在存储中(我有 7 个旧存储,最后一个是我这周的工作),因为我的客户要求我修改一些东西(所以我把我正在做的事情藏起来了)做了改变并推送了......在我恢复藏匿之前几秒钟我得到了蓝屏,然后在 reebot 之后,我无法执行任何 git 命令,即使是.git dir 在那里...(我不知道它是否包含某些内容或只是结构)。
因此,文件的状态是一个干净的工作副本(因为此时请求更改),而我的实际工作是 /IS 在存储中。 ..
好吧,我使用 sourcetree 作为前端...不知道是 sourcetree 的错还是一天结束时的蓝屏..但问题是我在 stash 中丢了工作。 ..
我先备份了我的垃圾 git 仓库,然后我按照@equivalent8 的建议克隆了仓库,但没有全部替换,我只在 .git
中使用了这个文件:
- 配置
- FETCH_HEAD
- 头
- 索引
- 打包参考
- sourcetreeconfig
这使得 sourcetree 能够打开并且 git 状态正常工作(即它又是一个 git 回购)。
然后从我把搜索稍微修改成这样
git fsck --no-reflog | select-string 'dangling commit' | foreach { $bits = $_ -split ' '; echo $bits[2]; git show $bits[2]}
所以我可以看到每个差异并逐个检查提交,如果它是一个候选者,我复制了第一行上面的哈希,然后前进到下一个 mach 按 q
。
然后我为每个候选人做了
git diff 52abca5cba3ff37b4954fd2c2e12c867dceb9481 --color=never > 52abca.patch
git diff 48f7110fa9d507226ce31593a0fc957e465d6c91 --color=never > 48f711.patch
免得我又丢了,查了一下候选人,我的作业还在!!! (我认为)
但我不能应用它们来检查每个文件,我每次都得到 error: unrecognized input
git apply 48f711.patch
,我猜我需要手动复制每个文件 paste/delete? ??
我的 git 存储库出现蓝屏,显然已损坏,这是我这边发生的。我注意到文件 .git/HEAD 是空的。我通过将以下内容添加到 .git/HEAD:
来解决问题
ref: refs/heads/master
我刚遇到蓝屏,我把上周左右的所有工作都藏起来了,但现在它不见了……好吧,我可以看到 .git
文件夹在资源管理器中,但做 git status or fsck
它说它不是 git 回购...这是 powershell
PS C:\Users\tyoc\Documentos\wtf> git status
fatal: Not a git repository (or any of the parent directories): .git
PS C:\Users\tyoc\Documentos\wtf> cd .git
PS C:\Users\tyoc\Documentos\wtf\.git> git status
fatal: Not a git repository (or any of the parent directories): .git
PS C:\Users\tyoc\Documentos\wtf\.git> cd ..
PS C:\Users\tyoc\Documentos\wtf> git init
Reinitialized existing Git repository in C:/Users/tyoc/Documentos/wtf/.git/
PS C:\Users\tyoc\Documentos\wtf> git status
fatal: Not a git repository (or any of the parent directories): .git
PS C:\Users\tyoc\Documentos\wtf> git fsck --no-reflog
fatal: Not a git repository (or any of the parent directories): .git
PS C:\Users\tyoc\Documentos\wtf> git stash
fatal: Not a git repository (or any of the parent directories): .git
如果能把藏品拿回来就好了,因为幸运的是,repo 有一个中央存储库,所以那里一切都很好......但我的工作不是,如果我一个星期没做任何东西会怎么样... :S.
我添加这个是为了澄清:
蓝屏前的 repo 状态是我的工作在存储中(我有 7 个旧存储,最后一个是我这周的工作),因为我的客户要求我修改一些东西(所以我把我正在做的事情藏起来了)做了改变并推送了......在我恢复藏匿之前几秒钟我得到了蓝屏,然后在 reebot 之后,我无法执行任何 git 命令,即使是.git dir 在那里...(我不知道它是否包含某些内容或只是结构)。
因此,文件的状态是一个干净的工作副本(因为此时请求更改),而我的实际工作是 /IS 在存储中。 ..
好吧,我使用 sourcetree 作为前端...不知道是 sourcetree 的错还是一天结束时的蓝屏..但问题是我在 stash 中丢了工作。 ..
我先备份了我的垃圾 git 仓库,然后我按照@equivalent8 的建议克隆了仓库,但没有全部替换,我只在 .git
中使用了这个文件:
- 配置
- FETCH_HEAD
- 头
- 索引
- 打包参考
- sourcetreeconfig
这使得 sourcetree 能够打开并且 git 状态正常工作(即它又是一个 git 回购)。
然后从我把搜索稍微修改成这样
git fsck --no-reflog | select-string 'dangling commit' | foreach { $bits = $_ -split ' '; echo $bits[2]; git show $bits[2]}
所以我可以看到每个差异并逐个检查提交,如果它是一个候选者,我复制了第一行上面的哈希,然后前进到下一个 mach 按 q
。
然后我为每个候选人做了
git diff 52abca5cba3ff37b4954fd2c2e12c867dceb9481 --color=never > 52abca.patch
git diff 48f7110fa9d507226ce31593a0fc957e465d6c91 --color=never > 48f711.patch
免得我又丢了,查了一下候选人,我的作业还在!!! (我认为)
但我不能应用它们来检查每个文件,我每次都得到 error: unrecognized input
git apply 48f711.patch
,我猜我需要手动复制每个文件 paste/delete? ??
我的 git 存储库出现蓝屏,显然已损坏,这是我这边发生的。我注意到文件 .git/HEAD 是空的。我通过将以下内容添加到 .git/HEAD:
来解决问题ref: refs/heads/master