什么会破坏我的git回购?

什么会破坏我的git回购?,git,Git,今天我开始做我的一个项目,但git似乎忘记了存储库。除init和类似命令外的任何git命令都会导致: 致命:不是git存储库或任何父目录:.git 然而,我所在的目录中存在.git。在谷歌搜索了一段时间后,我发现git需要一个名为HEAD的文件,它是指向HEAD的指针。然而,这个文件丢失了。我还发现我的原始头部应该指向一个更老的头部 我尝试使用cp ORIG_HEAD,这让git意识到它是一个存储库,但是: $ git status fatal: unable to read tree 9d1

今天我开始做我的一个项目,但git似乎忘记了存储库。除init和类似命令外的任何git命令都会导致: 致命:不是git存储库或任何父目录:.git

然而,我所在的目录中存在.git。在谷歌搜索了一段时间后,我发现git需要一个名为HEAD的文件,它是指向HEAD的指针。然而,这个文件丢失了。我还发现我的原始头部应该指向一个更老的头部

我尝试使用cp ORIG_HEAD,这让git意识到它是一个存储库,但是:

$ git status

fatal: unable to read tree 9d1dcfdaf1a6857c5f83dc27019c7600e1ffaff8


$ git log
commit ab071ed2e391f0d8e7f0e3d3a7f86735fe3947b9
Author: Esa Varemo <esa@kuivanto.fi>
Date:   Fri Jul 19 19:00:05 2013 +0300

    Added a template config file


< a few commits cut out>    


error: Could not read 5af6cdcf9387971ef52fdc0d00550fbc49d325c2
fatal: Failed to traverse parents of commit 948dd8ba52a36f780d58d38f7e1e083a277cbfe7
几天前,当我最后一次做它的时候,没有任何问题。我更改了一些文件,提交了更改并推送到远程回购,所以我有一个备份


知道会发生什么吗?

头文件需要指向分支,而不是提交。如果您知道正在处理的分支的名称,请尝试以下操作:

头锉

ref: refs/heads/branch_name_here
您可能需要仔细查看.git/refs/heads文件夹。其中的文件应以branchname作为文件名,该分支中的最新提交作为唯一内容


祝你好运

您使用的文件系统是什么?@fotanus-the-fs是ext4。我可能会做一个fsck,但是我需要大约一周的时间才能访问物理框…我想我还应该提到,我刚刚记得这个项目是由dropbox同步的,所以它可能是由dropboxd错误引起的。这修复了问题,看起来又正常了。原始头部似乎来自我无意中在分离的头部上工作,并将其合并回主。现在的问题是新的头在哪里消失了我还在想:问题是什么时候打破了它?而不是如何修复它?。然而,我非常感谢你的帮助,除非有人对最初的问题给出一个好的答案,否则我可能会接受这个问题,不用担心。说得好,别说了,你也引起了我的兴趣!两个次要脚注:不是符号引用的头:东西是分离的头[footnote to footnote:在非常旧的git版本中,而不是文本引用:…git使用符号链接作为符号引用!],并且,有时提交ID将位于压缩的refs文件中,.git/packed refs,而不是.git/refs/heads/中的单独文件。