Le message «src refspec master ne correspond à aucun» lors de l'envoi de validations dans Git

2692

Je clone mon dépôt avec:

git clone ssh://xxxxx/xx.git 

Mais après avoir modifié certains fichiers et addet commiteux, je veux les pousser vers le serveur:

git add xxx.php
git commit -m "TEST"
git push origin master

Mais l'erreur que je récupère est:

error: src refspec master does not match any.  
error: failed to push some refs to 'ssh://xxxxx.com/project.git'
sinoohe
la source
26
@Marco Ce n'est pas un doublon. Celui-ci est un problème très spécifique concernant le transfert d'une branche locale vers une branche distante. Celui-ci consiste à initialiser un dépôt et à le pousser vers le haut. Ils produisent la même erreur, mais les RAISONS qu'ils produisent cette erreur et les correctifs sont entièrement différents. Aussi, sinoohe, vous devez accepter une réponse. Probablement le premier, car il répond à la question et a aidé plus de 350 personnes.
tandrewnichols
Avez-vous configuré vos commandes git config pour installer et configurer git globalement sur votre machine?
IgorGanapolsky
1
J'espère que ce message serait utile à quelqu'un- samranga.blogspot.com/2015/07/… L'erreur dans la question peut être sautée même lorsque vous essayez de créer un référentiel git BitBucket à partir d'un projet déjà existant localement
Samitha Chathuranga
J'ai reçu cette erreur en essayant de pousser le mauvais nom de branche. Résolu en utilisant git statuspour obtenir le bon.
Tom Howard
5
Encore une autre tâche simple rendue difficile par Git. Les développeurs Git devraient utiliser Stack Overflow comme feedback dans leur boucle SDLC. Plus de 850 000 personnes devraient indiquer que quelque chose ne va vraiment pas dans le flux de travail de Git. Ils doivent engager un expert UX car ils ne peuvent clairement pas le faire par eux-mêmes.
2017 à 9h28

Réponses:

4143

Peut-être que vous avez juste besoin de vous engager. Je suis tombé sur cela quand j'ai fait:

mkdir repo && cd repo
git remote add origin /path/to/origin.git
git add .

Oops! Jamais engagé!

git push -u origin master
error: src refspec master does not match any.

Tout ce que j'avais à faire était:

git commit -m "initial commit"
git push origin master

Succès!

baisong
la source
130
Ne vous contentez pas de suivre cette étape aveuglément, regardez ce que @Vi a mentionné, puis modifiez votre commande push pour corriger ref.
Kumar
49
La raison la plus probable de cette erreur est que tous les fichiers ne sont pas suivis et n'ont pas été ajoutés. git add --alldans le cas où vous souhaitez ajouter tous les fichiers Ou vous pouvez ajouter des fichiers de manière sélective. Ensuite git commit -m "Initial comment", git push origin master. Cela fonctionnera sûrement.
Bhanu Pratap Singh
6
Résout un problème différent qui est agréable mais pas vraiment une réponse à cette question réelle.
Michael Durrant
7
git commit -m 'initial commit'doit être entre guillemets. ' git commit -m "initial commit", au moins sur les fenêtres.
dance2die
5
Une autre raison possible: vous n'avez pas réellement de branche appelée master
CarlosAS
843
  1. Essayez git show-refde voir quelles références vous avez. Y a-t-il un refs/heads/master?

  2. Vous pouvez essayer en git push origin HEAD:mastertant que solution indépendante des références locales. Cela indique explicitement que vous souhaitez pousser la référence locale HEADvers la référence distante master(voir la documentation de git-push refspec ).

Vi.
la source
6
ma branche principale n'était pas au-dessus des commits! J'ai donc créé une branche qui se trouvait à la fin de toutes les branches et je les ai poussées vers le serveur:
sinoohe
10
git checkout -b testbranch; git push origin testbranch: master
sinoohe
101
git show-refa montré ma branche; le git push origin HEAD:<branch>travaillé pour moi.
Glen Solsberry
5
Tu viens de me sauver Vi. Merci pour git push origin HEAD:master. Mais pourquoi quelque chose comme git push --force origin masterça ne fonctionne pas?
shkschneider
4
@ gms8994 - vous avez raison. si quelqu'un crée une branche en premier lieu au lieu de pousser dans master, la même unfriendlyerreur apparaît. utiliser git push origin <branch>au lieu de mastersi vous essayez de le faire git checkout -b <branch>avant toute PREMIÈRE poussée après l'initialegit remote add origin <url>
asyncwait
225

J'ai également eu une erreur similaire après avoir supprimé tous les fichiers de mon ordinateur local et je dois nettoyer tous les fichiers du référentiel.

Mon message d'erreur ressemblait à ceci:

error: src refspec master does not match any.
error: failed to push some refs to 'git@github ... .git'

Et cela a été résolu en exécutant les commandes suivantes:

touch README
git add README

git add (all other files)
git commit -m 'reinitialized files'
git push origin master --force  # <- caution, --force can delete others work.
Aryo
la source
10
Les autres réponses n'ont pas résolu le problème que j'avais (par exemple, j'avais déjà commis et j'avais encore cette erreur), mais en git push origin BRANCH --forcetravaillant. Je vous remercie!
Lemmings19
Voir cette réponse précédente . Je soupçonne que vous deviez ajouter un fichier car git ne suivra pas les répertoires vides.
3
push --force pourrait également faire exploser le travail acharné des collègues. Ajout d'un avertissement par celui-ci.
Michael Durrant
3
Cela a résolu mon problème. Je pense que git add l'a fait. Bien que pousser les choses au début, git ne les reconnaisse pas, c'est peut-être pourquoi j'ai eu le problème. La commande git add a résolu mon problème. aussi après cela, j'ai pu pousser sans --force. Merci Aryo
Anandaraja_Srinivasan
203
  1. Mes modifications étaient déjà engagées
  2. La poussée forcée m'a toujours donné la même erreur.

J'ai donc essayé la solution de Vi :

git push origin HEAD:<remoteBranch> 

Cela a fonctionné pour moi.

tldr
la source
19
J'ai finalement découvert que c'était parce que j'avais mal orthographié le nom de la succursale. J'ai réussi à pousser la branche A vers l'origine avec une branche nommée B avec git push origin HEAD:B, mais j'ai toujours la même erreur à chaque fois que je pousse avec git push originsur la branche A.
Yi H.
1
@YiHuang, ugh merci, j'ai vérifié mon nom de branche avant, puis je l'ai vérifié à nouveau à cause de votre commentaire - avait le même problème, l'a mal orthographié.
Lakesare
1
@ YiH.i était sûr que mon nom de branche est correct mais je l'ai revérifié après avoir lu votre commentaire et mon mauvais - a le même problème.
Null Pointer
125
git push -u origin master
error: src refspec master does not match any.

Pour cela, vous devez entrer le message de validation comme suit, puis appuyer sur le code:

git commit -m "initial commit"

git push origin master

Poussé à maîtriser avec succès.

VIKAS KOHLI
la source
J'ai vérifié que ça marche. Veuillez ignorer l'option -u, puis essayez
VIKAS KOHLI
Le problème ici semble être complètement différent de celui de l'OP ... mais il semble que beaucoup, y compris moi, avaient ce problème.
ZX9
110

Pour moi, je devais m'assurer que la clé publique était correctement configurée sur le serveur (ajoutée dans ~ / .ssh / authorized_keys) et dans GitHub / Bitbucket (ajoutée à mes clés SSH sur GitHub ou Bitbucket) - elles doivent correspondre.

Alors:

git add --all :/

git commit -am 'message'

git push -u origin master

Cela a finalement fonctionné pour moi.

rouge
la source
88

J'ai trouvé que cela s'était produit dans un tout nouveau référentiel après avoir ajouté uniquement un répertoire.

Dès que j'ai ajouté un fichier (par exemple un fichier README), Git push a très bien fonctionné.

Andrew E
la source
6
Cela fonctionne probablement parce que git ne suit pas réellement les répertoires, seulement les fichiers. Donc, si un répertoire est vide, git ne l'ajoutera pas réellement.
1
L'OP a ajouté un fichier (xx.php) donc ce n'était pas le problème dans ce cas même si dans d'autres cas cela peut être un problème et l'ajout d'un fichier une solution de ce problème.
Michael Durrant
1
Une solution aussi simple à un problème frustrant. Je testais la création et le clonage de dépôts et créais des répertoires vides et non des fichiers.
James Wierzba
1
8 ans plus tard, cela m'a évité des maux de tête!
rvictordelta
Dans mon cas, 1 -> git init 2 ---> git add origin .... etc 3 ---> git git push -u origin master ===> Ensuite, j'ai eu l'erreur ci-dessus. ===> Ensuite j'ai exécuté les 2 commandes suivantes, c'est disparaître. ---> git add * ---> git commit -m "Some message" ---> git git push -u origin master ===> Ça a bien marché pour moi, dans mon cas.
Rao
67

Manquant ou ignoré git add .ou git commitpeut provoquer cette erreur:

git push -u origin master
Username for 'https://github.com': yourusername
Password for 'https://[email protected]': 
error: src refspec master does not match any.
error: failed to push some refs to 'https://github.com/yourusername/foobar.git'

Pour le corriger, réinitialisez et suivez la séquence appropriée:

git init
git add .
git commit -m 'message'
git *create remote
git push -u origin master
aug2uag
la source
c'est exact, la fin de l'entreprise est plus spécifiquement git remote add __REMOTE_NAME__ __URL_OR_SSH__, et au-dessus du nom distant est "origine"
aug2uag
1
Ils ont ajouté et engagé dans leur question afin que ce ne soit pas le problème même si cela aide les autres.
Michael Durrant
Cette réponse a cependant fonctionné en raison de l' -uoption utilisée ici.
Michael Durrant
63

Pour le corriger, réinitialisez et suivez la séquence de code appropriée:

git init
git add .
git commit -m 'message'
git push -u origin master
pratik kumar
la source
55

Assurez-vous d'avoir ajouté d'abord, puis validez / push:

Comme:

git init
git add .
git commit -m "message"
git remote add origin "github.com/your_repo.git"
git push -u origin master
Saurabh Singh
la source
44

J'ai fait face au même problème, et j'ai utilisé --allow-empty:

$ git commit -m "initial commit" --allow-empty
...
$ git push
...

Supplément

L'une des principales raisons de ce problème est que certains serveurs Git, tels que BitBucket, n'ont pas leur masterbranche initialisée lorsqu'un nouveau référentiel est cloné.

Jin Kwon
la source
43

Cela se produit également lorsque vous êtes dans une branche spécifique et essayez de pousser une autre branche qui n'existe pas encore, comme:

$ git branch
* version-x  # you are in this branch
  version-y

$ git push -u origin master
error: src refspec master does not match any.
error: failed to push some refs to 'origin_address'
Wilsonfoz
la source
3
LOL. J'essayais de pousser vers le maître d'origine mais cette branche n'existait pas. Il a été appelé origine stable.
penner
1
Cela a -upeut-être aidé ici.
Michael Durrant
1
Dans le cas ci-dessus, le problème est bien sûr qu'il n'y a pas de branche locale master, vous ne pouvez donc pas la pousser. Vous souhaitez soit pousser une branche existante - soit créer la branche principale, puis la pousser, comme ceci:git checkout -b master; git push -u origin master;
tanius
4
Je viens de recevoir ceci lorsque j'ai mal orthographié le nom de la branche.
Sebastian Ärleryd
2
Ma branche locale a été orthographiée "s h eduler" et je faisais git push origin scheduler. HA! Une lettre coupée vous tuera dans la programmation. lol
protoEvangelion
35

Pour moi, ce qui suit a fonctionné pour déplacer les fichiers non suivis:

git add --all

Ensuite, j'ai suivi des étapes similaires

 git commit -m "First commit"

Alors,

git remote add origin git@github.....

Dernier mais pas des moindres:

git push -u origin master

Ce faisant, la sécurité Windows apparaîtra pour vous demander votre nom d'utilisateur et votre mot de passe.

Areeha
la source
1
vouliez-vous dire «git add --all» avec deux tirets
Abdallah Abdillah
29

Dans mon cas, j'ai oublié d'inclure le .gitignorefichier. Voici toutes les étapes nécessaires:

  1. Créez un référentiel Git vide sur la télécommande,
  2. En local, créez le fichier .gitignore pour votre projet. GitHub vous donne une liste d' exemples ici
  3. Lancez un terminal et, dans votre projet, exécutez les commandes suivantes:

    git remote add origin YOUR/ORIGIN.git
    
    git add .
    
    git commit -m "initial commit or whatever message for first commit"
    
    git push -u origin master
    
Ismail H
la source
Comment est-ce que l'erreur en question est liée à .gitignore?! Si elle est liée (ce dont je doute fortement), vous devez l'expliquer dans votre réponse. Merci
Pedram Bashiri
26

Ajoutez simplement un commit initial. Suivez ces étapes:

  • git add .

  • git commit -m "initial commit"

  • git push origin master

Cela a fonctionné pour moi.

NeeruKSingh
la source
24

Mon problème était que la branche «maître» n'avait pas encore été créée localement.

Un rapide

git checkout -b "master"

créé la branche principale, à quel point, un rapide

git push -u origin master

poussé le travail vers le référentiel Git.

Anthony
la source
22

Vous avez probablement oublié la commande "git add". après la commande "git init".

Sumer
la source
Et git commitbien sûr ...
Bill
20

J'ai également suivi les instructions de GitHub comme suit ci-dessous, mais j'ai toujours rencontré la même erreur que celle mentionnée par l'OP:

git init
git add .
git commit -m "message"
git remote add origin "github.com/your_repo.git"
git push -u origin master

Pour moi, et j'espère que cela aide certains, je poussais un gros fichier (1.58 GB on disk)sur mon MacOS. Lors de la copie en collant la ligne de codes suggérée ci-dessus, je n'attendais pas que mon processeur termine réellement le add .processus. Alors quand j'ai tapégit commit -m "message" il n'a fait référence à aucun fichier et n'a pas terminé tout ce qu'il doit faire pour valider correctement mon code sur GitHub.

La preuve en est que lorsque je tape git statushabituellement, j'obtiens des polices vertes pour les fichiers ajoutés. Mais tout était rouge. Comme si ce n'était pas du tout ajouté.

J'ai donc refait les étapes. J'ai tapé git add .et attendu que les fichiers finissent d'être ajoutés. J'ai ensuite suivi les étapes suivantes.

Gel
la source
19

Cela signifie simplement que vous avez oublié de faire le commit initial, essayez

git add .
git commit -m 'initial commit'
git push origin master
xuri
la source
veuillez écrire git commit -m "initial commit"
Yash Agrawal
19
  1. Première, git add .
  2. Seconde, git commit -m "message"
  3. Troisième, git push origin branch

Veuillez vérifier les fautes d'orthographe car cela pourrait également donner cette erreur.

Alwan Mortada
la source
18

J'ai eu le même problème quand j'ai manqué de courir:

git add .

(Vous devez avoir au moins un fichier, sinon vous obtiendrez à nouveau l'erreur.)

neoDev
la source
18

Cela arrive si vous oubliez de vous engager avant de pousser pour la première fois. Exécutez simplement:

git commit -m "first commit"
Badr Bellaj
la source
17

Pour vérifier l'état actuel, git status.

Et suivez également ces étapes:

git init
git add .
git commit -m "message"
git remote add origin "github.com/your_repo.git"
git push -u origin master
Dinith
la source
16

Cela se produit lorsque vous avez ajouté votre fichier, oublié de valider et de pousser. Validez donc les fichiers, puis appuyez sur.

user993563
la source
14

J'ai eu le même problème. Je l'ai fait par les étapes suivantes:

1. git commit -m 'message'
2. git config --global user.email "your mail"
3. git config --global user.name "name"
4. git commit -m 'message'
5. git push -u origin master
user3051460
la source
14

Si vous obtenez cette erreur en travaillant en mode HEAD détaché, vous pouvez le faire:

git push origin HEAD:remote-branch-name

Voir aussi: Faire une poussée Git à partir d'une tête détachée

Si vous êtes sur une branche locale différente de la branche distante, vous pouvez le faire:

git push origin local-branch-name:remote-branch-name
casser
la source
13

Dans le scénario où vous extrayez le code d'un référentiel externe (GitHub) et que vous souhaitez l'importer dans un système personnel / interne, cette commande brille vraiment:

git push --all origin

Cela pousse toutes les branches locales vers la télécommande, sans vérifier les références et sans insister sur les commits.

d.raev
la source
12

Cela se produira également si vous avez une faute de frappe dans le nom de la branche que vous essayez de pousser.

Gavin
la source
2
Je soupçonne qu'un grand nombre d'entre nous qui sont venus ici via une recherche sur le Web ont mal tapé le nom!
sauge
12
git add .

est tout ce dont vous avez besoin. Ce code suit tous les fichiers non suivis de votre répertoire.

Chasseur
la source
10

Si vous rencontrez ce problème même après avoir fait git initet poussé votre commit initial. Vous pouvez ensuite essayer ce qui suit,

git checkout -b "new branch name"
git push origin "new branch name"

Votre code sera poussé comme une nouvelle branche.

Govind
la source