fatal: mauvaise révision par défaut ‘HEAD’

J’utilise GIT comme système de contrôle de source. Nous l’avons installé sur l’une de nos boîtes Linux. Tortoise GIT est mon client Windows.

Ce matin, j’ai vérifié certains changements et marqué le code. J’ai ensuite effectué une poussée de mon repository local vers le référentiel distant.

Quand je vais dans mon repository sur la boîte unix et que je git log je reçois:

 fatal: bad default revision 'HEAD' 

Mais quand je fais un show log utilisant mon client Windows tortoiseGit l’histoire se présente bien comme ci-dessous …

 --- 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  1364338495 +1100 --- SHA-1: 0000000000000000000000000000000000000000 Working dir changes 0 files changed --- 

Le code a bien été envoyé au repository distant. J’ai pu vérifier en clonant le repository dans un répertoire différent.

Est-ce que quelqu’un sait pourquoi je reçois le fatal: bad default revision 'HEAD' ?

ps Il s’agit d’un repository nu mais j’ai créé d’autres référentiels dénudés qui n’ont pas eu ce problème.

Votre repo est à vous, ce qui se passe dans votre entreprise est entièrement à vous jusqu’à ce que vous poussiez ou (autorisiez) a récupérer ou cloner. Lorsque vous avez supprimé votre référentiel Windows – ce dossier ne représentait pas votre référentiel local, il s’agissait de votre repo local, vous avez supprimé tout ce qui y était fait, qui n’était jamais repoussé, récupéré ou cloné.

edit: Ah, ok, je pense que je vois ce qui se passe ici: vous avez poussé vers votre repo linux mais ce n’est pas nu et vous n’y avez jamais travaillé.

Au lieu de git log , faites git log --all . Ou git checkout some-branch-name .

Ensuite, essayez de cloner le repo localement, sur votre linux box; Je parie que ça marche. Comment utilisez-vous votre repo sur Linux? Essayez de vous installer dans le répertoire .git et le git daemon --base-path=. --export-all git daemon --base-path=. --export-all , si cela se trouve juste là, allez dans votre boîte Windows et essayez git clone git://your.linux.box.ip , si le démon se plaint, il ne peut pas lier add --port=54345 au Le démon invoque et :54345 vers l’URL de clone.

Cela m’arrive lorsque la twig dans laquelle je travaille est supprimée du référentiel, mais que mon espace de travail n’est pas mis à jour. (Nous avons un outil qui vous permet de créer plusieurs “workspaces” git à partir du même référentiel en utilisant des liens simulés.)

Si git branch ne marque pas de twig comme courant, essayez de le faire

 git reset --hard <> 

J’ai essayé un certain nombre d’approches jusqu’à ce que je travaille sur celui-ci.

Pas encore engagé?

C’est une twig orpheline si elle n’a pas de commit.

il suffit de faire un commit initial et l’erreur disparaîtra:

 git commit -m "initial commit" 

Remarque: Git 2.6 (Q3 / Q4 2015) fournira enfin un message d’erreur plus significatif.

Voir commit ce11360 (29 août 2015) par Jeff King ( peff ) .
(Fusionné par Junio ​​C Hamano – gitster – dans commit 699a0f3 , 02 sep 2015)

log : diagnostiquer plus clairement HEAD vide

Si vous initiez ou clonez un référentiel vide, le message initial de l’exécution de ” git log ” n’est pas très convivial:

 $ git init Initialized empty Git repository in /home/peff/foo/.git/ $ git log fatal: bad default revision 'HEAD' 

Détectons cette situation et écrivons un message plus convivial:

 $ git log fatal: your current branch 'master' does not have any commits yet 

Nous détectons également le cas où «HEAD» pointe vers une référence cassée; Cela devrait être encore moins courant, mais facile à voir.
Notez que nous ne diagnostiquons pas tous les cas possibles. Nous nous appuyons sur resolve_ref , ce qui signifie que nous n’obtenons pas d’informations sur des cas complexes. Par exemple, ” --default master ” utiliserait dwim_ref pour trouver ” dwim_ref refs/heads/master “, mais nous remarquons seulement que ” master ” n’existe pas.
De même, une expression sha1 complexe telle que ” --default HEAD^2 ” ne résoudra pas comme une ref.

Mais ça va. Nous retombons sur un message d’erreur générique dans ces cas, et il est peu probable qu’ils soient utilisés de toute façon.
Attraper un “HEAD” vide ou cassé améliore le cas commun et les autres cas ne sont pas régressés.

Assurez-vous que la twig “master” existe! Ce n’est pas juste un nom apparemment.

J’ai eu cette erreur après avoir créé un repo vierge, en y poussant une twig nommée “dev” et en essayant d’utiliser git log dans le nu repo. Fait intéressant, git branch sait que dev est la seule twig existante (donc je pense que c’est un bug de git).

Solution: J’ai répété la procédure, cette fois-ci en renommant “dev” en “master” sur le repo de travail avant de passer au repo nu. Succès!

Cela semble se produire lorsque .git/HEAD fait référence à une twig qui n’existe pas. J’ai rencontré cette erreur dans un repository qui n’avait rien dans .git/refs/heads . Je n’ai aucune idée de comment le repo est entré dans cet état, j’ai hérité de quelqu’un qui a quitté l’entreprise.

Je ne pense pas que ce soit le problème de OP, mais si vous êtes comme moi, vous avez rencontré cette erreur pendant que vous essayiez de jouer avec les commandes git plumbing ( update-index & cat-file ) sans jamais rien engager dans le première place. Donc, essayez de commettre quelque chose ( git commit -am 'First commit' ) et votre problème devrait être résolu.

J’ai eu la même erreur et je n’ai pas pu le résoudre.

Ensuite, j’ai remarqué 3 fichiers supplémentaires dans l’un de mes répertoires.

Les fichiers ont été nommés:

 config, HEAD, description 

J’ai supprimé les fichiers et l’erreur ne s’est pas manifestée.

config contenue:

 [core] repositoryformatversion = 0 filemode = true bare = true 

HEAD contenait:

 ref: refs/heads/master 

description contenue:

 Unnamed repository; edit this file 'description' to name the repository.