web-dev-qa-db-fra.com

Erreur Git: le maître src refspec ne correspond à aucun

J'ai besoin de créer un dépôt nommé carboncake.

j'ai essayé ceci:

Cloné le référentiel gitosis-admin sur ma machine locale

$ git clone [email protected]:repositories/gitosis-admin.git
$ cd gitosis-admin
$ vim gitosis.conf

Ajout des 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

Puis copié le fichier de clé de pub généré par PuTTY (j'utilise Git basg pour Windows):

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

Exécuté 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 cela ne crée pas de carboncake.git dans My Server.

Alors j'ai suivi ceci:

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 commander/cloner le nouveau référentiel à partir de ma machine locale

$ mkdir carboncake
$ cd carboncake
$ git init 
$ touch a_text_file.txt 
$ git add a_text_file.txt 
$ git remote add Origin [email protected]:repositories/carboncake.git
$ git Push Origin master

Ce qui a renvoyé l'erreur:

error: src refspec master does not match any.
fatal: The remote end hung up unexpectedly
error: failed to Push some refs to '[email protected]: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 '[email protected]:repositories/carboncake.git'

Quand j'ai essayé git Push Origin master:refs/heads/master il a renvoyé l'erreur:

error: src refspec master does not match any.
fatal: The remote end hung up unexpectedly
error: failed to Push some refs to '[email protected]:repositories/carboncake.git'

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

De plus, le répertoire /srv/gitosis/repositories/carboncake.git/refs/heads/ sur le serveur est vide.

Comment puis-je réparer cela?

212
Mithun Sreedharan

Vous avez créé un nouveau référentiel et ajouté des fichiers à l'index, mais vous n'avez pas encore créé votre premier commit. Après avoir fini:

 git add a_text_file.txt 

... faire:

 git commit -m "Initial commit."

... et ces erreurs devraient disparaître.

520
Mark Longair

La réponse rapide possible: lorsque vous clonez pour la première fois avec succès un référentiel git vide, l’origine n’a pas de branche maître. Donc, la première fois que vous avez un engagement à Push, vous devez faire:

git Push Origin master

Ce qui va créer cette nouvelle branche maîtresse pour vous. Les petites choses comme celle-ci sont très déroutantes avec les git.

Si cela ne résout pas votre problème, il s'agit probablement d'un problème lié à la gitolite:

Votre fichier de configuration a l’air étrange. Il aurait dû y avoir un exemple de fichier de configuration fourni avec votre gitolite. Le mien ressemble à ceci:

repo    phonegap                                                                                                                                                                           
    RW+     =   myusername otherusername                                                                                                                                               

repo    gitolite-admin                                                                                                                                                                         
    RW+     =   myusername                                                                                                                                                               

Assurez-vous que vous définissez votre fichier de configuration correctement.

En fait, Gitolite remplace le compte de l'utilisateur de gitolite par un shell modifié qui n'accepte pas les sessions de terminal interactives. Vous pouvez voir si gitolite fonctionne en essayant de ssh dans votre boîte en utilisant le compte utilisateur gitolite. S'il sait qui vous êtes, le message "Bonjour XYZ, vous avez accès aux référentiels suivants: X, Y, Z", puis ferme la connexion. S'il ne vous connaît pas, il ne fera que fermer la connexion.

Enfin, après l'échec de votre premier git Push sur votre machine locale, vous ne devriez jamais recourir à la création manuelle du référentiel sur le serveur. Nous devons savoir pourquoi votre git Push a initialement échoué. Vous pouvez causer plus de confusion à vous-même et à gitolite si vous n’utilisez pas exclusivement gitolite une fois que vous l’avez configuré.

17
Mauvis Ledford