【问题标题】:fatal: bad default revision 'HEAD'致命:错误的默认修订版“头”
【发布时间】:2013-03-15 18:08:00
【问题描述】:

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

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

当我在 unix 框上转到我的存储库并输入 git 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'吗?

附言这是一个裸存储库,但是我创建了其他没有此问题的裸存储库。

【问题讨论】:

标签: git


【解决方案1】:

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

git commit -m "initial commit"

【讨论】:

  • 谢谢,对我很有帮助
  • 感谢您的出色回答(-:它与主题相匹配,是创建存储库后解决我的问题的简单方法。
  • 为我工作。导致这种情况的错误似乎是需要运行 git config --global user.email 和 git config --global user.name
【解决方案2】:

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

如果git branch 没有将任何分支标记为当前分支,请尝试这样做

git reset --hard <<some branch>>

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

【讨论】:

  • 这只是为我做的 :)
  • 我重命名了我所在的分支并收到“错误的默认修订”错误。这为我修好了,谢谢!
【解决方案3】:

尚未提交?

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

【讨论】:

  • 嗨。感谢您的回复。请参阅我对以下回复提供的答案。我很确定我确实做了推动。
【解决方案4】:

您的 repo 是您的,在您推送或(允许)获取或克隆之前,其中的内容完全是您的业务。当您删除 Windows 存储库时 - 该文件夹不代表您的本地存储库,它是您的实际本地存储库,您删除了其中从未推送、获取或克隆的所有内容。

编辑:啊,好吧,我想我明白这里发生了什么:你推送到你的 linux 存储库,但它不是裸露的,而且你从未在其中工作过。

git log --all 代替git log。或git checkoutsome-branch-name

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

【讨论】:

  • 对不起,我忘了提到我确实推送到了远程存储库。我知道推送是成功的,因为我可以看到 GitWeb 中的变化。因此,我认为您上面所说的并不正确。
  • 所以根据之前的评论,我的远程仓库中肯定有代码。但由于某种原因,Git 不让我克隆它,而是给了我那个错误。听起来对吗?我该如何解决?
  • 很高兴听到你推了。鉴于没有太多可能性,我通过推入 git inited 存储库并尝试运行日志来重现您的 git log 行为症状。
  • 无论发生了什么,看起来我的存储库已经损坏。我一直在关注如何尝试恢复我的存储库 (git-scm.com/book/en/Git-Internals-Maintenance-and-Data-Recovery) 的指南。但是,列出的许多命令对我不起作用,只会出错。我认为重新开始使用这个存储库可能会更快。有趣的是,GitWeb 没有问题。它仍然列出了代码等。我想知道为什么
  • 所以我昨天从头开始。我再次签入我的代码并标记了一些更改。我仍然致命:当我尝试从 unix 发出“git log”时,默认修订版“HEAD”错误。但是当我在 Windows 中使用 tortoiseGit 并执行“显示日志”时,日志看起来不错,它显示了我所有的历史记录。我对这个错误感到非常困惑。有任何想法吗?我将更改我的问题以反映我刚刚尝试过的内容
【解决方案5】:

注意:Git 2.6(Q3/Q4 2015)将最终提供更有意义的错误消息。

参见 Jeff King (peff)commit ce11360(2015 年 8 月 29 日)。
(由 Junio C Hamano -- gitster -- 合并于 commit 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”指向损坏的 ref 的情况;这应该更不常见,但很容易看到。
请注意,我们不会诊断所有可能的情况。我们依赖resolve_ref,这意味着我们无法获得有关复杂案例的信息。例如,“--default master”将使用 dwim_ref 来查找“refs/heads/master”,但我们只注意到“master”不存在。
同样,像“--default HEAD^2”这样的复杂 sha1 表达式也不会解析为 ref。

不过没关系。在这些情况下,我们会退回到通用错误消息,并且无论如何都不太可能使用它们。
捕获一个空的或损坏的“HEAD”会改善常见情况,而其他情况不会回归。

【讨论】:

    【解决方案6】:

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

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

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

    【讨论】:

    • scp'ing 分支结束后发生在我身上。
    【解决方案7】:

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

    【讨论】:

    • 除了文件在 BSOD 中损坏之外,我也发生了同样的事情。我只是用当前头部的 sha-1 哈希替换它,现在一切似乎都井井有条。
    【解决方案8】:

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

    【讨论】:

      【解决方案9】:

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

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

      【讨论】:

      • 删除 git 自动生成的文件是一个非常糟糕的主意。您应该只能通过命令来解决问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-16
      • 1970-01-01
      • 2017-01-29
      • 2015-11-08
      • 1970-01-01
      • 2020-04-08
      • 2016-11-08
      相关资源
      最近更新 更多