77

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

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

当我在 unix 框上进入我的存储库并输入时,git log我得到:

fatal: bad default revision 'HEAD'

但是当我show log使用我的 WindowstortoiseGit客户端时,历史会很好地显示如下......

---
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 这是一个裸存储库,但是我创建了其他没有这个问题的裸存储库。

4

9 回答 9

44

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

git commit -m "initial commit"
于 2014-11-25T03:17:42.907 回答
38

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

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

git reset --hard <<some branch>>

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

于 2013-08-07T09:50:22.867 回答
25

还没承诺?

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

于 2013-03-26T03:56:20.613 回答
19

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

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

而不是git log,做git log --all。或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到守护进程调用和:54345克隆 url。

于 2013-03-26T03:47:41.083 回答
7

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

请参阅Jeff King ( )的提交 ce11360(2015 年 8 月 29 日) 。(由Junio C Hamano 合并 -- --commit 699a0f3中,2015 年 9 月 2 日)peff
gitster

logHEAD:更清楚地诊断空

如果您初始化或克隆一个空存储库,运行“”的初始消息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”会改善常见情况,而其他情况不会回归。

于 2015-09-03T08:22:04.557 回答
6

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

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

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

于 2013-07-15T20:01:17.040 回答
2

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

于 2014-11-20T18:01:00.957 回答
0

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

于 2016-08-08T02:22:43.230 回答
-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.
于 2017-01-23T02:15:10.723 回答