Cette erreur semble très répandue pour différentes raisons.
J'ai un simple repo git nu appelé "kiflea.git", je le clone comme ceci :
git clone git://kipdola.be/kiflea.git
Puis git me dit : warning: remote HEAD refers to nonexistent ref, unable to checkout.
Et oui, il n'y a pas de fichiers versionnés dans la carte, à l'exception du répertoire .git. Bref, la seule chose que j'ai besoin de faire est :
cd kiflea
git checkout master
Et ça marche, tous les fichiers sont là. Mais je pensais que le clonage d'un repo vérifiait automatiquement le master, alors que se passe-t-il exactement, et comment puis-je le réparer ?
J'ai remarqué que, après avoir fait le git checkout master
ce qui est ajouté à mon fichier de configuration .git local :
[branch "master"]
remote = origin
merge = refs/heads/master
Il est probablement intéressant de savoir que ce dépôt git était un dépôt svn dans un passé lointain.
Ps : lorsque l'on parcourt le dépôt nu à l'aide de gitweb, il y a clairement une master
succursale là-bas : http://kipdola.be/gitweb/?p=kiflea.git;a=sommaire
2 votes
Qu'est-ce que
git ls-remote origin
vous montrer ?0 votes
C'est la même chose avant ou après le
checkout master
bit :25f600739343a7ce32d6311a1e6140870774810b refs/heads/master
1 votes
Il semble que le référentiel distant ait perdu (ou n'ait jamais eu) son
HEAD
. Avez-vous un accès direct à celui-ci ? Si oui, voir aquí2 votes
Si vous clonez un dépôt et que vous ne spécifiez pas la branche, il tente d'utiliser la tête distante. Comme expliqué ci-dessous dans les réponses, vous ne pouvez pas influencer directement la branche. Cependant, en vérifiant une branche différente au moment du clonage, vous évitez cette vérification. Dans votre cas, il semble que le master existe mais que la tête distante pointe ailleurs, donc utilisez :
git clone -b master <url> <dir>