在Github for Windows崩溃后如何恢复仓库?

时间:2012-10-21 19:13:20

标签: git github github-for-windows

当我尝试提交时,Github for Windows刚刚遭到轰炸,现在git(命令行)告诉我每个文件都是新的。我还有一个53mb大小的.get文件夹。在此之前我做了大约60到100次提交。

如何在不丢失任何历史记录或更改的情况下恢复工作副本?

Git状态说:

  

在分支主机上

     

初始提交

     

承诺的变更:
    (使用“git rm --cached ...”来取消演出)

     

新文件:.gitattributes
  新文件:.gitignore
  ......(1620多个文件)

     

未提交的更改提交:
    (使用“git add ...”来更新将要提交的内容)
    (使用“git checkout - ...”放弃工作目录中的更改)

     

修改:Src / Foo / Bar / Index.cshtml

     

未跟踪文件:
    (使用“git add ...”包含将要提交的内容)

Posh Git命令提示符如下所示

  

C:\ Projects \ Foo [master +1623~0 -0 | + 0~1 -0]>

git log的输出如下

  

C:\ Projects \ Foo [master +1623~0 -0 | +1~1 -0!]> git日志
  致命:错误的默认修订版“HEAD”

更新

我刚刚从Git GUI运行了“验证数据库”,它返回了以下内容:

  

悬空树4b825dc642cb6eb9a060e54bf8d69288fbee4904悬空提交   30855e0deee8600f10733e6760db54fee2570a38悬空提交   cd8bc69ad56ca5c4d51d0d5028525698158cf3ec悬空提交   c934f9823d907cd69c5e08a0159b9de4dfe3da35悬空提交   f958caca247978db978b70460276b5da7582bb06通知:HEAD指向一个   未出生的分支(主)通知:没有默认参考

2 个答案:

答案 0 :(得分:2)

好的,首先,我复制了我的工作副本,所以我总是有一个后备位置。接下来我运行了git fsck,它提供了以下输出。

> dangling tree 4b825dc642cb6eb9a060e54bf8d69288fbee4904 dangling commit
> 30855e0deee8600f10733e6760db54fee2570a38 dangling commit
> cd8bc69ad56ca5c4d51d0d5028525698158cf3ec dangling commit
> c934f9823d907cd69c5e08a0159b9de4dfe3da35 dangling commit
> f958caca247978db978b70460276b5da7582bb06 notice: HEAD points to an
> unborn branch (master) notice: No default references

从这里开始,我用

git checkout <some-hash>

完成上述悬空的哈希。事实证明,最后一次悬挂提交是我最近的提交,所以git checkout c934f9823d907cd69c5e08a0159b9de4dfe3da35让我在崩溃前回到我的工作副本。

从这里开始我git checkout -b master在此提交时重新创建了我的主分支。 git status现在显示了一个更改,即我尝试提交的更改。承诺让我重回正轨。

答案 1 :(得分:1)

首先:不要惊慌。备份项目,包括工作文件夹。嗯......实际上,让两个:)

  

我还有一个.mbit文件夹,大小为53mb。

Git是一个非常有弹性的工具。对对象数据库的分析可以“重建”您的历史记录。

Moreovoer,GHfW记录了与回购的大部分互动。长话短说,GHfW团队很有可能帮助你拯救你的回购。

announcement blog post

所述
  

我们确保在Twitter上阅读每一个提及。如果您发现错误,请将其提交至support@github.com。每封电子邮件都由真人阅读。

发送邮件给他们。喜欢现在