今天我开始研究我的一个项目,但是git似乎已经忘记了#34;关于存储库。任何git命令(init
除外)都会导致:
fatal: Not a git repository (or any of the parent directories): .git
但是我在.git
存在的目录中。谷歌搜索了一段时间后,我发现git需要一个名为HEAD
的文件,它是指向" HEAD"的指针。但是这个文件丢失了。我还发现ORIG_HEAD,我确实应该指向一个较老的" HEAD"。
我尝试做cp ORIG_HEAD 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
几天前我上次工作时没有问题。我更改了一些文件,提交了更改并推送到远程仓库(所以我确实有备份)。
任何想法可能发生了什么?
答案 0 :(得分:2)
HEAD文件需要指向分支而不是提交。如果你知道你正在处理的分支的名称,请尝试:
HEAD文件
ref: refs/heads/branch_name_here
您可能需要挖掘.git / refs / heads文件夹。其中的文件应该使用branchname作为其文件名,并将该分支中的最新提交作为唯一内容。
祝你好运!