3

抱歉,如果我的术语有误,我对 Git 没有那么丰富的经验。我有一个来自 github repo 的本地 repo,在停电后,它现在显示

HEAD as 0000000000000000000000000000000000000000 

以及标记为添加的每个文件。TortoiseGit 显示FETCH_HEAD为我唯一的本地分支,即使我有几个分支以及 master。远程分支似乎记得发生了什么 - 它具有源的远程 URL 和最近分支的选择。

我真的很紧张尝试做任何事情,以防它破坏一切,因为我有本地(非推送)更改。我可以查找此问题的特定术语吗?

我在 Windows 上使用 tortoise-git。我确实安装了 git 命令行,但除了基础知识之外,我真的不知道任何事情。

在此处输入图像描述

我应该补充一点,我未推送的更改很少——实际上是 2 个文件——因为我在中断前刚刚完成了推送。因此,如果这比尝试恢复本地提交更容易,那么恢复与远程存储库同步就好了。

当我跑步时,git fsck我得到:

错误:无效HEAD错误:无法解包071bf20e651e1ac9ea91821ee947786138f79156头错误:inflateEnd:流一致性错误(没有消息)致命:松散对象071bf20e651e1ac9ea91821ee947786138f79156(存储在的.git / OBJ学分/ 07 / 1bf20e651e1ac9ea91821ee947786138f79156)已损坏

当我跑步时,git reflog我得到:

致命:错误的默认修订版“头”

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

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

4

1 回答 1

1

您未推送的提交很可能仍然存在,只是分支引用丢失了。

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

  • 复制整个目录,你永远不知道
  • 运行一个git fsck
  • reflog中查找您的最后一次提交。这很可能是最后一个分支提示
  • 在其上创建一个分支: git checkout -b laststate
  • 将未提交的文件保存在工作目录之外。
  • 硬重置为最后一个分支提示 SHA1git reset --hard <sha1>
  • 收回未提交的更改

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

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

git reset --hard origin/master

应该解决问题并让你的头回来。

于 2013-03-04T09:38:09.273 回答