致命:错误的默认修订'HEAD'

时间:2013-03-26 03:14:05

标签: git

我正在使用GIT作为我的源控制系统。我们将它安装在我们的一个Linux机器上。 Tortoise GIT是我的Windows客户端。

今天早上我检查了一些更改,并标记了代码。然后我将我的本地存储库推送到远程存储库。

当我在unix框中访问我的存储库并输入git log时,我得到:

fatal: bad default revision 'HEAD'

但当我使用我的Windows show log客户端进行tortoiseGit时,历史记录会很好地显示出来......

---
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'的原因?

P.S。它是一个裸存储库但是我创建了其他没有这个问题的裸存储库。

9 个答案:

答案 0 :(得分:32)

当我正在处理的分支从存储库中删除时,我发生了这种情况,但我所在的工作区没有更新。 (我们有一个工具,允许您使用simlinks从同一个存储库创建多个git“工作区”。)

如果git branch未将任何分支标记为当前分支,请尝试执行

git reset --hard <<some branch>>

我尝试了很多方法,直到我解决了这个问题。

答案 1 :(得分:26)

只需进行初始提交,错误就会消失:

git commit -m "initial commit"

答案 2 :(得分:24)

尚未提交?

如果没有提交,它是一个孤儿分支。

答案 3 :(得分:18)

你的回购是属于你的,在你推动或(允许)获取或克隆之前,它的内容完全属于你的业务。当你删除你的windows repo时 - 那个文件夹不代表你的本地仓库,它是你真正的本地仓库,你删除了从未被推送,获取或克隆的所有内容。

编辑 啊,好吧,我想我看到这里发生了什么:你推到了你的linux回购,但它没有裸露,你从来没有参与其中。< / p>

而不是git log,请git log --all。或git checkout some-branch-name

然后尝试在Linux机器上本地克隆repo;我打赌它有效。你用什么来为linux上的repo服务?尝试cd进入它的.git目录和git daemon --base-path=. --export-all,如果它就在那里然后转到你的windows框并尝试git clone git://your.linux.box.ip,如果守护进程抱怨它无法绑定添加--port=54345守护进程调用和:54345到克隆URL。

答案 4 :(得分:7)

注意:Git 2.6(2015年第3季度/第4季度)将最终提供更有意义的错误消息。

commit ce11360Jeff King (peff)(2015年8月29日) Junio C Hamano -- gitster --合并于commit 699a0f3,2015年9月2日)

  

log:更清楚地诊断空HEAD

     

如果您初始化或克隆空存储库,则运行&#34; git log&#34;的初始消息不是很友好:

$ 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
  

我们还检测到&#39; HEAD&#39;指向破碎的参考;这应该更不常见,但很容易看到   请注意,我们不会诊断所有可能的病例。我们依赖resolve_ref,这意味着我们无法获得有关复杂案例的信息。例如,&#34; --default master&#34;会使用dwim_ref来查找&#34; refs/heads/master&#34;但我们只会注意到&#34; master&#34;不存在。
  同样,复杂的sha1表达式如&#34; --default HEAD^2&#34;将不会作为参考解析。

     

但那没关系。在这些情况下,我们会回到一般性错误消息,无论如何它们都不太可能被使用   抓住一个空的或破碎的#34; HEAD&#34;改善了常见情况,其他情况没有退化。

答案 5 :(得分:6)

确保分支“master”存在!它显然不仅仅是一个名字。

我创建了一个空白的裸仓库,将一个名为“dev”的分支推送到它,并尝试在裸仓库中使用git log时出现此错误。有趣的是,git branch知道dev是唯一存在的分支(所以我认为这是一个git bug)。

解决方案:我重复了这个程序,这次在工作回购中将“dev”重命名为“master”,然后推送到裸仓库。成功了!

答案 6 :(得分:1)

.git/HEAD引用不存在的分支时,似乎会发生这种情况。我在.git/refs/heads中没有任何内容的仓库中遇到了这个错误。我不知道回购是如何进入那个州的,我继承了离开公司的人。

答案 7 :(得分:0)

我不认为这是OP的问题,但是如果你像我一样,当你试图玩git管道命令时遇到了这个错误(update-index&amp; cat-file 首先没有实际提交任何内容 。所以尝试提交一些东西(git commit -am 'First commit'),你的问题就应该解决了。

答案 8 :(得分:-1)

我遇到了同样的错误,无法解决。

然后我注意到我的一个目录中有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.