Ich verwende GIT als mein Quellcodeverwaltungssystem. Wir haben es auf einer unserer Linux-Boxen installiert. Tortoise GIT ist mein Windows-Client.
Heute Morgen habe ich einige Änderungen eingecheckt und den Code markiert. Ich habe dann mein lokales Repository in das Remote-Repository verschoben.
Wenn ich in mein Repository auf der Unix-Box gehe und tippe, git log
erhalte ich:
fatal: bad default revision 'HEAD'
Aber wenn ich show log
meinen Windows- tortoiseGit
Client verwende, wird der Verlauf wie folgt angezeigt ...
---
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 <[email protected]> 1364338495 +1100
---
SHA-1: 0000000000000000000000000000000000000000
Working dir changes
0 files changed
---
Der Code wurde definitiv in das Remote-Repository verschoben. Ich konnte dies überprüfen, indem ich das Repository in ein anderes Verzeichnis klonte.
Weiß jemand, warum ich die erhalte fatal: bad default revision 'HEAD'
?
ps Es ist ein nacktes Repository, aber ich habe andere nackte Repositorys erstellt, bei denen dieses Problem nicht aufgetreten ist.
Antworten:
Ihr Repo gehört Ihnen. Was darin vor sich geht, liegt ganz bei Ihnen, bis Sie pushen oder (erlauben), zu holen oder zu klonen. Wenn Sie Ihr Windows-Repo gelöscht haben - dieser Ordner stellte Ihr lokales Repo nicht dar, es war Ihr tatsächliches lokales Repo. Sie haben alles gelöscht, was darin ausgeführt wurde und nie verschoben, abgerufen oder geklont wurde.
edit: Ah, okay, ich glaube ich sehe was hier los ist: du bist auf dein Linux Repo gestoßen, aber es ist nicht nackt und du hast nie daran gearbeitet.
Statt zu
git log
tungit log --all
. Odergit checkout
some-branch-name
.Versuchen Sie dann, das Repo lokal auf Ihrer Linux-Box zu klonen. Ich wette, es funktioniert. Was benutzt du, um dein Repo unter Linux zu bedienen? Versuchen Sie, cd'ing in sein .git-Verzeichnis und
git daemon --base-path=. --export-all
, wenn das nur dort sitzt, dann gehen Sie zu Ihrer Windows-Box und versuchen Siegit clone git://your.linux.box.ip
, wenn der Dämon sich beschwert, dass er nicht binden kann, fügen Sie--port=54345
dem Daemon-Aufruf und:54345
der Klon-URL hinzu.quelle
git log
Verhaltenssymptome reproduziert, indem ich in eingit init
Ed Repo geschoben und versucht habe, das Protokoll auszuführen.Führen Sie einfach ein erstes Commit durch und der Fehler wird behoben:
quelle
Dies passiert mir, wenn der Zweig, in dem ich arbeite, aus dem Repository gelöscht wird, der Arbeitsbereich, in dem ich mich befinde, jedoch nicht aktualisiert wird. (Wir haben ein Tool, mit dem Sie mithilfe von Simlinks mehrere Git- "Arbeitsbereiche" aus demselben Repository erstellen können.)
Wenn
git branch
kein Zweig als aktuell markiert ist, versuchen Sie esIch habe eine Reihe von Ansätzen ausprobiert, bis ich diesen herausgefunden habe.
quelle
Noch nicht verpflichtet?
Es ist ein verwaister Zweig, wenn er kein Commit hat.
quelle
Hinweis: Git 2.6 (Q3 / Q4 2015) liefert endlich eine aussagekräftigere Fehlermeldung.
Siehe Commit ce11360 (29. August 2015) von Jeff King (
peff
) .(Zusammengeführt von Junio C Hamano -
gitster
- in Commit 699a0f3 , 02. September 2015)quelle
Stellen Sie sicher, dass der Zweig "Master" vorhanden ist! Es ist anscheinend nicht nur ein Name.
Ich habe diesen Fehler erhalten, nachdem ich ein leeres Bare-Repo erstellt, einen Zweig mit dem Namen "dev" darauf verschoben und versucht habe, das Git-Protokoll im Bare-Repo zu verwenden. Interessanterweise weiß der Git-Zweig, dass Dev der einzige existierende Zweig ist (daher denke ich, dass dies ein Git-Fehler ist).
Lösung: Ich habe den Vorgang wiederholt und diesmal "dev" in "master" für das Arbeits-Repo umbenannt, bevor ich zum Bare-Repo gewechselt bin. Erfolg!
quelle
scp
den Zweig umgestaltet habe.Dies scheint aufzutreten, wenn
.git/HEAD
auf einen Zweig verwiesen wird, der nicht existiert. Ich bin auf diesen Fehler in einem Repo gestoßen, in dem nichts enthalten war.git/refs/heads
. Ich habe keine Ahnung, wie das Repo in diesen Zustand gekommen ist, ich habe von jemandem geerbt, der das Unternehmen verlassen hat.quelle
Ich glaube nicht, dass dies das Problem von OP ist, aber wenn Sie wie ich sind, sind Sie auf diesen Fehler gestoßen, als Sie versucht haben, mit Git-Installationsbefehlen (
update-index
&cat-file
) herumzuspielen, ohne jemals etwas zu begehen . Versuchen Sie also, etwas (git commit -am 'First commit'
) festzuschreiben, und Ihr Problem sollte gelöst sein.quelle
Ich habe den gleichen Fehler erhalten und konnte ihn nicht lösen.
Dann bemerkte ich 3 zusätzliche Dateien in einem meiner Verzeichnisse.
Die Dateien wurden benannt:
Ich habe die Dateien gelöscht und der Fehler ist nicht aufgetreten.
config
enthalten:HEAD
enthalten:description
enthalten:quelle