Erreur Git: src refspec master ne correspond à aucun [dupliquer]

cette question a déjà une réponse ici:

  • src refspec maître ne correspond à aucune pression s'engage dans git 57 réponses

je dois créer un repo nommé carboncake .

j'ai essayé ceci:

cloné le dépôt gitosis-admin à ma machine locale

$ git clone gitosis@myserver.net:repositories/gitosis-admin.git
$ cd gitosis-admin
$ vim gitosis.conf

a ajouté les sections [repo carboncake] et [group carboncake] à la fin du fichier

[gitosis]

[group team]
writable = sweepshots
members = git_id_rsa

[group gitosis-admin]
writable = gitosis-admin
members = git_id_rsa

[repo carboncake]
description = A brand new app by Mithun.
owner = Mithun P

[group carboncake]
writable = myappname
members = mithun @core

a ensuite copié le fichier pub key généré par Putty (j'utilise Git basg pour Windows):

$cp /some/where/mithun.pub keydir/mithun.pub

exécutait les commandes suivantes:

$ git add gitosis.conf keydir/mithun.pub
$ git commit -m "Added 'carboncake' repository and 'mithun' user."

$ git pull --rebase
$ git push

mais il ne crée pas carboncake.git dans mon serveur.

alors j'ai suivi ceci:

a exécuté les commandes suivantes sur le serveur:

$ su gitosis 
$ git init --bare /srv/gitosis/repositories/carboncake.git

Voici mon problème:

j'ai essayé de vérifier/cloner le nouveau dépôt depuis ma machine locale

$ mkdir carboncake
$ cd carboncake
$ git init 
$ touch a_text_file.txt 
$ git add a_text_file.txt 
$ git remote add origin gitosis@myserver.net:repositories/carboncake.git
$ git push origin master

qui renvoie l'erreur:

error: src refspec master does not match any.
fatal: The remote end hung up unexpectedly
error: failed to push some refs to 'gitosis@myserver.net:repositories/carboncake.git'

quand j'ai essayé git push origin HEAD:master il a renvoyé l'erreur:

error: src refspec HEAD does not match any.
fatal: The remote end hung up unexpectedly
error: failed to push some refs to 'gitosis@myserver.net:repositories/carboncake.git'

quand j'ai essayé git push origin master:refs/heads/master il a retourné l'erreur:

error: src refspec master does not match any.
fatal: The remote end hung up unexpectedly
error: failed to push some refs to 'gitosis@myserver.net:repositories/carboncake.git'

git show-ref sur la machine locale n'affiche rien

aussi /srv/gitosis/repositories/carboncake.git/refs/heads/ le répertoire du serveur est vide.

Comment puis-je réparer ça?

195
demandé sur CharlesB 2011-04-27 14:08:58

2 réponses

vous avez créé un nouveau dépôt et ajouté des fichiers à l'index, mais vous n'avez pas encore créé votre première propagation. Après avoir fait:

 git add a_text_file.txt 

... do:

 git commit -m "Initial commit."

... et ces erreurs devraient disparaître.

479
répondu Mark Longair 2011-04-27 10:18:43

la réponse rapide: lorsque vous avez réussi à cloner un dépôt git vide, l'origine n'a pas de branche principale. Ainsi, la première fois que vous avez un engagement à pousser vous devez faire:

git push origin master

qui va créer cette nouvelle branche principale pour vous. Les petites choses comme ça sont très déroutantes avec git.

si cela n'a pas réglé votre problème, alors c'est probablement un problème lié à la gitolite:

votre fichier conf semble étrange. Il aurait dû y avoir un exemple de fichier conf fourni avec votre gitolite. Le mien ressemble à ceci:

repo    phonegap                                                                                                                                                                           
    RW+     =   myusername otherusername                                                                                                                                               

repo    gitolite-admin                                                                                                                                                                         
    RW+     =   myusername                                                                                                                                                               

veuillez vous assurer de configurer correctement votre fichier conf.

Gitolite remplace en fait le compte de l'utilisateur gitolite par un shell modifié qui n'accepte pas les sessions interactives sur terminal. Vous pouvez voir si gitolite fonctionne en essayant de ssh dans votre boîte en utilisant le compte utilisateur gitolite. S'il sait qui tu es, il dira quelque chose. comme "Hi XYZ, Vous avez accès aux dépôts suivants: X, Y, Z" et ensuite fermer la connexion. S'il ne te connaît pas, il fermera la connexion.

enfin, après que votre première poussée git a échoué sur votre machine locale, vous ne devriez jamais avoir recours à la création manuelle du repo sur le serveur. Nous devons savoir pourquoi votre coup de pouce a échoué au début. Vous pouvez causer vous-même et gitolite plus de confusion lorsque vous n'utilisez pas gitolite exclusivement une fois que vous l'avez mis en place.

17
répondu Mauvis Ledford 2011-04-28 06:43:01