【问题标题】:Git repository broken after moving files and directories移动文件和目录后 Git 存储库损坏
【发布时间】:2011-06-21 16:23:31
【问题描述】:

我移动了一堆文件和目录(包括我的 .git 目录)然后又回来了,现在 git 坏了

这是我收到的错误消息:

fatal: Not a git repository (or any of the parent directories): .git

显然解决方案是将head重命名为HEAD,根据I backed up a git project, and got "fatal: Not a Git Repository"进行

我现在的问题是我只有ORIG_HEAD 而不是head。我可以将 ORIG_HEAD 重命名为 HEAD 并将我的 git repo 返回吗? (对不起双关语,我不得不)

【问题讨论】:

  • 我可能不应该问这个问题,只是先自己尝试了一下,但是哦,现在它就在这里,可能对其他人有用。我将 ORIG_HEAD 复制到 HEAD 并且我的 git repo 确实再次开始工作(尽管 HEAD 现在的提交时间比我搞砸我的 repo 之前的时间要早​​得多)。
  • 那么,如果这是一个答案形式的问题,那么我们应该以问题的形式回答吗? “我会花 200 美元买科学,亚历克斯。” =P 感谢您的提示,祝您康复顺利。
  • 通常会发布一个自我回答作为回答。你甚至可以接受它(我认为经过一段时间的延迟(几个小时?))
  • @sehe 它告诉我,我可以在 7 或 8 小时后,但我不认为我能记得回到它 :)
  • Meta Stack Overflow 您可以轻松进入your profile page 并浏览问题列表。 “接受”的答案显示为 黄底绿(a.o.p 白底绿)

标签: git


【解决方案1】:

尝试 git reflog 看看它是否仍然知道你正确的“最后一个”头,它很可能拥有它:

 git log HEAD@{0}

 git log HEAD@{1}

如果你想回到那里,

 git checkout -b rescue HEAD@{0} # or whatever head it was

创建一个救援分支。如果您确定它是正确的版本(并且您没有任何想要保留的未提交更改):

 git reset --hard HEAD@{0} # or whatever head it was

【讨论】:

  • 啊,太好了!直到现在才知道 reflog 做了什么 - 非常有用!我相信我使用git reset --hard my_SHA 将 HEAD 指针放回我想要的位置,一切都很好。如果我遇到更复杂的情况,reflog 也会很有帮助
  • 这个gitready link 非常适合向我解释 reflog,顺便说一句
猜你喜欢
  • 1970-01-01
  • 2015-01-16
  • 2010-12-05
  • 2012-01-06
  • 1970-01-01
  • 2019-01-18
  • 1970-01-01
  • 2017-01-31
  • 2016-08-02
相关资源
最近更新 更多