致命的:错误的默认版本'HEAD'
我使用GIT作为我的源代码pipe理系统。 我们把它安装在我们的一个Linux机器上。 龟GIT是我的Windows客户端。
今天早上我检查了一些变化,并标记了代码。 然后,我将本地存储库推送到远程存储库。
当我去unix框中的存储库并inputgit log
我得到:
fatal: bad default revision 'HEAD'
但是当我使用我的windows tortoiseGit
客户端来show log
的时候,历史很好地显示出来,如下所示…
--- SHA-1: f879573ba3d8e62089b8c673257c928779f71692 Initial drop of code --- master origin/master oms-phase4-v1.0.0 SHA-1: 56176dbe45e6175b18c9f44533828806c63142ab OMS Phase 4 - Added OMS Cust. Order No. to EDI Purchase Order Header screens Tag Info object 56176dbe45e6175b18c9f44533828806c63142ab type commit tag oms-phase4-v1.0.0 tagger Richard Riviere <richard.riviere@myer.com.au> 1364338495 +1100 --- SHA-1: 0000000000000000000000000000000000000000 Working dir changes 0 files changed ---
代码已经被推送到远程仓库。 我已经能够通过将存储库克隆到不同的目录进行检查。
有谁知道我为什么收到fatal: bad default revision 'HEAD'
?
ps这是一个裸仓库,但我已经创build了其他裸仓库没有这个问题。
你的回购是你的,在你推动或(允许)获取或克隆之前,完全是你的业务。 当你删除你的Windows回购 – 该文件夹并不代表你的本地回购,这是你真正的本地回购,你删除了一切从来没有推,抓取或克隆。
编辑:啊,好吧,我想我看到这里发生了什么:你推到你的linux回购,但它不是光秃秃的,你从来没有在它的工作。
git log
而不是git log --all
。 或者git checkout
some-branch-name
。
然后尝试克隆本地回购,在您的Linux机器上; 我敢打赌,它的工作。 你用什么来服务你的回购在Linux上? 尝试cd到它的.git目录和git daemon --base-path=. --export-all
git daemon --base-path=. --export-all
,如果只是坐在那里,然后去你的窗口框,并尝试git clone git://your.linux.box.ip
,如果守护进程抱怨它无法绑定添加 – 端口--port=54345
的守护进程调用和:54345
克隆url。
当我正在工作的分支从版本库中删除时,发生这种情况,但是我所在的工作区没有更新。 (我们有一个工具可以让你使用simlinks从同一个仓库创build多个git“workspaces”。)
如果git branch
没有将任何分支标记为最新,请尝试执行
git reset --hard <<some branch>>
我尝试了很多方法,直到我完成了这一个。
没有承诺呢?
如果没有提交,它是一个孤儿分支。
只是做一个初始提交,错误将消失:
git commit -m "initial commit"
确保分支“主”存在! 这显然不只是一个名字。
创build空白裸回购后,我得到这个错误,推一个名为“开发”的分支,并试图使用裸回购的git日志。 有趣的是,git分支知道dev是唯一存在的分支(所以我认为这是一个git bug)。
解决scheme:我重复了这个程序,这次在重新启动仓库之前,在工作仓库上重新命名为“dev”,并将其改名为“master”。 成功!
注意:Git 2.6(2015年第3季度)将最终提供更有意义的错误消息。
见Jeff King( peff
)的 提交ce11360 (2015年8月29日) 。
(由Junio C gitster
合并- gitster
-在承诺699a0f3 ,2015年9月2日)
log
:更清楚地诊断空HEAD
如果您初始化或克隆一个空的存储库,运行“
git log
”的初始消息不是很友好:
$ git init Initialized empty Git repository in /home/peff/foo/.git/ $ git log fatal: bad default revision 'HEAD'
让我们来检测这种情况,写一个更友好的信息:
$ git log fatal: your current branch 'master' does not have any commits yet
我们还检测到“HEAD”指向一个坏的参考的情况; 这应该更不常见,但很容易看到。
请注意,我们不诊断所有可能的情况。 我们依靠resolve_ref
,这意味着我们不能获得有关复杂情况的信息。 例如,“–--default master
”将使用dwim_ref
来查找“refs/heads/master
”,但是我们只注意到“master
”不存在。
类似的,像“--default HEAD^2
”这样复杂的sha1expression式不会作为ref来parsing。但没关系。 在这种情况下,我们会回到一个通用的错误信息,而且不太可能被使用。
捕捉一个空的或破碎的“头”提高了常见的情况下,其他案件不倒退。
这似乎发生在.git/HEAD
引用不存在的分支时。 我遇到了一个在.git/refs/heads
没有任何内容的回购的错误。 我不知道回购是如何进入这个状态的,我是从离开公司的人那里inheritance的。
我不认为这是OP的问题,但如果你像我一样,当你试图玩弄gitpipe道命令( update-index
和cat-file
) 而没有实际提交任何东西的时候遇到了这个错误第一名。 所以尝试提交一些东西( git commit -am 'First commit'
),你的问题应该被解决。
我得到了同样的错误,并不能解决它。
然后我注意到我的一个目录中有3个额外的文件。
这些文件被命名为:
config, HEAD, description
我删除了文件,并没有出现错误。
config
包含:
[core] repositoryformatversion = 0 filemode = true bare = true
HEAD
包含:
ref: refs/heads/master
description
包含:
Unnamed repository; edit this file 'description' to name the repository.