我正在使用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。它是一个裸存储库但是我创建了其他没有这个问题的裸存储库。
答案 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 ce11360见Jeff 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.