簡體   English   中英

致命:錯誤的默認修訂'HEAD'

[英]fatal: bad default revision 'HEAD'

我正在使用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'

ps它是一個裸存儲庫但是我創建了其他沒有這個問題的裸存儲庫。

當我正在處理的分支從存儲庫中刪除時,這種情況發生在我身上,但我所在的工作區沒有更新。 (我們有一個工具,允許您使用simlinks從同一個存儲庫創建多個git“工作區”。)

如果git branch沒有將任何分支標記為當前分支,請嘗試執行

git reset --hard <<some branch>>

我嘗試了很多方法,直到我解決了這個問題。

只是做一個初始提交,錯誤將消失:

git commit -m "initial commit"

尚未承諾?

如果它沒有提交,它是一個孤立分支。

您的回購是您的,在您推送或(允許)獲取或克隆之前,其中發生的事情完全是您的業務。 刪除windows repo時 - 該文件夾不代表您的本地倉庫,它是您的實際本地倉庫,您刪除了從未推送,獲取或克隆的所有內容。

編輯:啊,好吧,我想我看到這里發生了什么:你推到了你的linux回購,但它不是裸露的,你從來沒有參與其中。

而不是git log ,請執行git log --all 或者git checkout some-branch-name

然后嘗試在Linux機器上本地克隆repo; 我打賭它有效。 你用什么來為linux上的repo服務? 嘗試cd進入其.git目錄和git daemon --base-path=. --export-all git daemon --base-path=. --export-all ,如果那只是坐在那里然后去你的Windows框並嘗試git clone git://your.linux.box.ip ,如果守護進程抱怨它無法綁定add --port=54345到守護進程調用和:54345到克隆網址。

注意:Git 2.6(2015年第3季度/第4季度)將最終提供更有意義的錯誤消息。

請參閱Jeff King( peff 提交的ce11360 (2015年8月29日
(由Junio C gitster合並- gitster - in 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”可以改善常見情況,而其他情況則不會消退。

確保分支“master”存在! 它顯然不僅僅是一個名字。

我創建了一個空白的裸倉庫,將一個名為“dev”的分支推送到它,並嘗試在裸倉庫中使用git log時出現此錯誤。 有趣的是,git branch知道dev是唯一存在的分支(所以我認為這是一個git bug)。

解決方案:我重復了這個過程,這次在工作倉庫中將“dev”重命名為“master”,然后推送到裸倉庫。 成功!

.git/HEAD引用不存在的分支時,似乎會發生這種情況。 我在.git/refs/heads沒有任何內容的.git/refs/heads遇到了這個錯誤。 我不知道回購是如何進入該州的,我是從一個離開公司的人那里繼承的。

我不認為這是OP的問題,但如果你像我一樣,你在嘗試使用git管道命令( update-indexcat-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.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM