[英]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-index
和cat-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.