Git本地副本似乎已经失去了整个历史

时间:2013-03-04 09:29:08

标签: git github tortoisegit

如果我的术语错误,请道歉,我对Git没有经验。我有一个来自github仓库的本地仓库,在停电后,现在正在显示

HEAD as 0000000000000000000000000000000000000000 

并标记为要添加的每个文件。 TortoiseGit显示FETCH_HEAD是我唯一的本地分支,尽管我有几个分支和主分支。远程分支似乎记得发生了什么 - 它有原始的远程URL和一些最近的分支。

我真的很紧张,只是因为我有本地(非推动)的变化而无法完成任何事情。我可以查一下这个问题的具体术语吗?

我在Windows上使用tortoise-git。我确实安装了git命令行,但除了基础知识之外我什么都不知道。

enter image description here

我应该补充一下,我的未更改的更改是最小的 - 实际上是2个文件 - 因为我刚刚在停电之前做了一次推送。因此,如果这比尝试恢复本地提交更容易,那么恢复与远程仓库同步就好了。

当我运行git fsck时,我得到:

  

错误:HEAD错误无效:无法解压缩   071bf20e651e1ac9ea91821ee947786138f79156标题错误:inflateEnd:   流一致性错误(无消息)致命:松散的对象   071bf20e651e1ac9ea91821ee947786138f79156(存储在.git / obj中)   ects / 07 / 1bf20e651e1ac9ea91821ee947786138f79156)已损坏

当我运行git reflog时,我得到:

  

致命:错误的默认修订'HEAD'

当我运行git reset --hard时,它失败了:

  

致命:无法将“HEAD”解析为有效的参考号。

1 个答案:

答案 0 :(得分:1)

你的未提交的提交很可能仍然存在,只是分支引用已经丢失。

恢复它们的最佳方法如下:

  • 复制整个目录,你永远不知道
  • 运行git fsck
  • 查看reflog上次提交的内容。它很可能是最后一个分支提示
  • 在其上创建一个分支:git checkout -b laststate
  • 保存与工作目录不同的未提交文件。
  • 尽量重置最后一个分支提示SHA1 git reset --hard <sha1>
  • 放回未提交的更改

所以看到你的编辑你的回购真的搞砸了。

HEAD无效参考,现在您的最后机会是将其设置为origin/master

git reset --hard origin/master

应该解决问题并将你的HEAD设置回来。