首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Git本地拷贝似乎已经丢失了整个历史。

Git本地拷贝似乎已经丢失了整个历史。
EN

Stack Overflow用户
提问于 2013-03-04 09:29:07
回答 1查看 1.1K关注 0票数 3

抱歉,如果我的术语是错误的,我没有那么有经验的Git。我有一个从github回购的本地回购,在停电后,它现在显示

代码语言:javascript
代码运行次数:0
运行
复制
HEAD as 0000000000000000000000000000000000000000 

和标记为add的每一个文件。TortoiseGit显示FETCH_HEAD是我唯一的本地分支,尽管我有几个分支,也有主人。远程分支似乎还记得发生了什么-它有一个远程URL的起源和最近的几个分支。

我真的很紧张,只要尝试做任何事情,以防它破坏了一切,因为我有局部的(非推动的)变化。我能查到这个问题有什么具体的术语吗?

我在Windows上用乌龟盖特。我确实安装了git命令行,但除了基本知识之外,我什么都不知道。

我要补充的是,我的未推送更改是最小的--字面上是2个文件--就像我在中断之前做的那样。因此,如果与远程回购同步比尝试恢复本地提交更容易,那么恢复与远程回购同步就很好了。

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

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

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

致命:坏的默认修订“头”

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

致命:未能将“HEAD”解析为有效的引用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-04 09:38:09

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

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

  • 复制整个目录,你永远不会知道
  • 运行git fsck
  • 查看最后一次提交的雷击。这很可能是最后一个分支提示
  • 在上面创建一个分支:git checkout -b laststate
  • 将未提交的文件保存在工作dir之外。
  • 硬重设到最后一个分支提示SHA1 git reset --hard <sha1>
  • 将未提交的更改放回

所以看到你的编辑你的回购真的很糟糕。

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

代码语言:javascript
代码运行次数:0
运行
复制
git reset --hard origin/master

应该能解决问题并把头放回原处。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15198281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档