Git:致命错误:所有新仓库的默认修订版本“HEAD”有误。

4
问题出在大量的shell自定义设置上。
如果我尝试使用git init创建新的仓库,它会两次给出fatal: bad default revision 'HEAD'错误信息。
如果我运行git log,它会三次给出相同的错误信息。
我已经根据其他答案中提到的可能是在我的主目录中创建了仓库的情况下,删除了~/.git~/.config~/.gitconfig。唯一不会出现此问题的仓库是我从别人那里克隆的仓库。
除了删除主目录中带有git信息的所有内容之外,我不确定自己做了什么。
根据请求:
jsw:~ jsw$ mkdir test
jsw:~ jsw$ cd test
jsw:test jsw$ git init
Initialized empty Git repository in /Users/jsw/test/.git/
fatal: bad default revision 'HEAD'
fatal: bad default revision 'HEAD'
jsw:test(master|23448707m) jsw$ cat .git/HEAD
ref: refs/heads/master
fatal: bad default revision 'HEAD'
fatal: bad default revision 'HEAD'


jsw:~ jsw$ git status
fatal: Not a git repository (or any of the parent directories): .git

2
检查您的项目根目录的父目录之一是否包含 .git 文件夹。如果不是这种情况,请在 git init 之后(在尚未为 Git 初始化的新目录中),通过运行 cat .git/HEAD 检查 HEAD 文件的内容,并在此处报告。 - jub0bs
在创建新目录并运行 git init 之前,我删除了父目录中的 .git 目录。已更新我的问题。 - Ravenous
如果你从家目录运行git status,会发生什么? - jub0bs
jsw:~ jsw$ git status fatal: Not a git repository (or any of the parent directories): .git - Ravenous
你已经进行了初始提交吗? - eslimaf
“cat” 告诉你默认版本有问题。请问您的 shell 是什么?您是否在尝试通过打印当前分支来更改提示符等一些无聊的操作? - Edward Thomson
3个回答

6
您可能会遇到这个错误,是因为您在HEAD版本中没有任何提交记录,所以当您执行"git log"命令时,它无法找到HEAD上的任何提交记录。
请尝试:
mkdir test
cd test
git init
git commit -m 'Initial Commit' --allow-empty
git log

1
这是我正确的理由。一个我只是知道的简单事实。 - Seto

4
您运行了cat .git/HEAD命令,它回复如下:
ref: refs/heads/master
fatal: bad default revision 'HEAD'
fatal: bad default revision 'HEAD'

由于cat不是git命令,也不关心您的HEAD,我怀疑您已经配置了您的shell来执行类似于打印当前分支名称的操作。

实际上,查看您的shell提示符:

jsw:test(master|23448707m) jsw$

我很确定这一点。

要么关闭您尝试执行的任何Shell魔法,修复它以使其知道如何处理新存储库,要么只是在进行第一次提交之前应对错误消息。


1
谢谢。我会想办法修复我的 shell。直到有人指向了 --allow-empty,错误信息才消失了。当我杀掉 shell 并重新启动时,就不再出现错误了。 - Ravenous

0
请使用以下命令:
git init git commit -m 'initial commit' --allow-empty git log
然后运行reflog,您将看到ref#。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接