Il messaggio 'src refspec master non corrisponde a nessuno' quando si preme commit in Git


2692

Clono il mio repository con:

git clone ssh://xxxxx/xx.git 

Ma dopo che ho cambiato alcuni file e adde commitloro, voglio spingerli al server:

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

Ma l'errore che ricevo è:

error: src refspec master does not match any.  
error: failed to push some refs to 'ssh://xxxxx.com/project.git'

26
@Marco Non è un duplicato. Quello è un problema molto specifico riguardo al push di una filiale locale in una filiale remota. Questo riguarda l'inizializzazione di un repository e il suo push up. Producono lo stesso errore, ma i MOTIVI producono quell'errore e le correzioni sono completamente diverse. Inoltre, anche tu, dovresti accettare una risposta. Probabilmente il primo, visto che risponde alla domanda e ha aiutato oltre 350 persone.
tandrewnichols,

Hai impostato i comandi git config per installare e configurare git a livello globale sul tuo computer?
IgorGanapolsky

1
Spero che questo post sia utile a qualcuno- samranga.blogspot.com/2015/07/… L'errore nella domanda può essere spuntato anche quando si tenta di creare un repository BitBucket git da un progetto già localmente esistente
Samitha Chathuranga

Ho ricevuto questo errore durante il tentativo di inviare il nome del ramo sbagliato. Risolto usando git statusper ottenere quello giusto.
Tom Howard,

5
Ancora un altro semplice compito reso difficile da Git. Gli sviluppatori Git dovrebbero usare Stack Overflow come feedback nel loro loop SDLC. Oltre 850.000 persone dovrebbero indicare che qualcosa non va nel flusso di lavoro di Git. Devono assumere un esperto di UX perché chiaramente non possono farlo da soli.
1717

Risposte:


4141

Forse devi solo impegnarti. Mi sono imbattuto in questo quando ho fatto:

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

Oops! Mai impegnato!

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

Tutto quello che dovevo fare era:

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

Successo!


130
Non limitarti a seguire questo passaggio alla cieca, guarda cosa ha detto @Vi, quindi modifica il comando push per correggere ref.
Kumar,

49
Il motivo più probabile di questo errore è che tutti i file non sono tracciati e non sono stati aggiunti. git add --allnel caso in cui desideri aggiungere tutti i file o puoi aggiungere selettivamente i file. Poi git commit -m "Initial comment", git push origin master. Questo funzionerà sicuramente.
Bhanu Pratap Singh,

6
Risolve un problema diverso, il che è carino, ma in realtà non è una risposta a questa domanda reale.
Michael Durrant,

7
git commit -m 'initial commit'dovrebbe essere doppiamente citato. ' git commit -m "initial commit", almeno su Windows.
dance2die,

5
Un'altra possibile ragione: in realtà non hai un ramo chiamato master
CarlosAS

843
  1. Prova git show-refa vedere quali ref hai. C'è un refs/heads/master?

  2. Puoi provare git push origin HEAD:mastercome soluzione più indipendente dal riferimento locale. Questo afferma esplicitamente che si desidera trasferire il riferimento locale HEADal riferimento remoto master(consultare la documentazione di refspec git-push ).


6
il mio ramo principale non era in cima agli impegni! così ho creato un ramo che era alla fine di tutti i rami e li ho inviati al server:
sinoohe,

10
git checkout -b testbranch; git push origin testbranch: master
sinoohe

101
git show-refha mostrato il mio ramo; ha git push origin HEAD:<branch>funzionato per me.
Glen Solsberry,

5
Mi hai appena salvato Vi. Grazie per git push origin HEAD:master. Ma perché qualcosa del genere git push --force origin masternon funziona?
shkschneider,

4
@ gms8994 - hai ragione. se qualcuno crea un ramo come prima cosa invece di spingere nel master, lo stesso unfriendlyerrore si presenta. utilizzare git push origin <branch>invece che masternel caso in cui si tenti di eseguire git checkout -b <branch>una PRIMA spinta dopo l'inizialegit remote add origin <url>
attendere

225

Ho anche avuto un errore simile dopo aver eliminato tutti i file sul mio computer locale e devo ripulire tutti i file nel repository.

Il mio messaggio di errore era qualcosa del genere:

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

Ed è stato risolto eseguendo i seguenti comandi:

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.

10
Le altre risposte non hanno risolto il problema che stavo riscontrando (per esempio, avevo già commesso e avevo ancora questo errore), ma facendo un lavoro git push origin BRANCH --force. Grazie!
Lemmings19

Vedi questa risposta precedente . Ho il sospetto che tu abbia bisogno di aggiungere un file perché git non terrà traccia delle directory vuote.

3
spingere - la forza potrebbe anche spazzare via il duro lavoro dei colleghi. Aggiunto avviso da esso.
Michael Durrant,

3
Questo ha risolto il mio problema. Penso che Git Add l'abbia fatto. Mentre spingere le cose a prima vista non riconosce le cose, potrebbe essere questo il motivo per cui ho avuto il problema. Il comando git add ha risolto il mio problema. anche dopo sono stato in grado di spingere senza --force. Grazie Aryo
Anandaraja_Srinivasan,

203
  1. Le mie modifiche erano già state impegnate
  2. La spinta forzata mi dava ancora lo stesso errore.

Quindi ho provato la soluzione di Vi :

git push origin HEAD:<remoteBranch> 

Questo ha funzionato per me.


19
Alla fine ho scoperto che era perché avevo scritto male il nome del ramo. Ho spinto con successo il ramo A verso l'origine con un ramo chiamato B con git push origin HEAD:B, ma ho ancora ricevuto lo stesso errore ogni volta che spingo con git push originil ramo A.
Yi H.

1
@YiHuang, grazie, ho già controllato il nome della mia filiale e poi l'ho ricontrollato a causa del tuo commento - ha avuto lo stesso problema, l'ho scritto male.
Lakesare,

1
@ YiH.i ero sicuro che il mio nome di filiale fosse corretto, ma ho appena ricontrollato dopo aver letto il tuo commento e il mio cattivo - ha lo stesso problema.
Puntatore nullo

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

Per questo è necessario inserire il messaggio di commit come segue e quindi premere il codice:

git commit -m "initial commit"

git push origin master

Spinto con successo a padroneggiare.


Ho verificato che funzioni. Si prega di ignorare l'opzione -u e quindi provare
VIKAS KOHLI il

Il problema qui sembra essere completamente diverso da quello dell'OP ... ma sembra che molti, incluso me, abbiano avuto questo problema.
ZX9

110

Per me ho dovuto assicurarmi che la chiave pubblica fosse correttamente configurata sul server (aggiunta in ~ / .ssh / authorized_keys) e in GitHub / Bitbucket (aggiunta alle mie chiavi SSH su GitHub o Bitbucket) - devono corrispondere.

Poi:

git add --all :/

git commit -am 'message'

git push -u origin master

Alla fine ha funzionato per me.


88

Ho scoperto che ciò è accaduto in un repository nuovo di zecca dopo che Git ha aggiunto solo una directory.

Non appena ho aggiunto un file (ad esempio un file README), Git push ha funzionato alla grande.


6
Questo probabilmente funziona perché git non tiene traccia delle directory, ma solo dei file. Quindi se una directory è vuota, git non la aggiungerà effettivamente.

1
L'OP ha aggiunto un file (xx.php) quindi questo non è stato il problema in questo caso anche se in altri casi questo può essere un problema e l'aggiunta di un file è una soluzione di quel problema.
Michael Durrant,

1
Una soluzione così semplice a un problema frustrante. Stavo testando la creazione e la clonazione di repository e ho creato directory vuote non file.
James Wierzba,

1
8 anni dopo questo mi ha fatto venire il mal di testa!
rvictordelta,

Nel mio caso, 1 -> git init 2 ---> git aggiungi origin .... etc 3 ---> git git push -u origin master ===> Quindi ho ricevuto l'errore sopra. ===> Quindi ho eseguito i seguenti 2 comandi, è scomparso. ---> git add * ---> git commit -m "Alcuni messaggi" ---> git git push -u origin master ===> Ha funzionato bene per me, nel mio caso.
Rao,

67

Manca o salta git add .o git commitpuò causare questo errore:

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

Per risolverlo, reinizializza e segui la sequenza corretta:

git init
git add .
git commit -m 'message'
git *create remote
git push -u origin master

è corretto, la fine dell'attività è più specifica git remote add __REMOTE_NAME__ __URL_OR_SSH__e sopra il nome remoto è "origine"
aug2uag

1
Hanno aggiunto e si sono impegnati nella loro domanda in modo che non fosse questo il problema, anche se questo aiuta altre persone.
Michael Durrant,

Questa risposta ha funzionato tuttavia a causa -udell'opzione che è stata utilizzata qui.
Michael Durrant,

63

Per risolverlo, reinizializza e segui la sequenza di codice corretta:

git init
git add .
git commit -m 'message'
git push -u origin master

55

Assicurati di aver aggiunto prima, quindi esegui il commit / push:

Piace:

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

44

Ho affrontato lo stesso problema e ho usato --allow-empty:

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

Supplemento

Uno dei motivi principali di questo problema è che alcuni server Git, come BitBucket, non hanno masterinizializzato il loro ramo quando viene clonato un nuovo repository.


43

Questo succede anche quando ti trovi in ​​un ramo specifico e provi a spingere un altro ramo che non esiste ancora, come:

$ 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'

3
LOL. Stavo provando a spingere al master di origine ma quel ramo non esisteva. Si chiamava origine stabile.
penner,

1
Il -uforse ha aiutato qui.
Michael Durrant,

1
Nel caso sopra, il problema è ovviamente che non esiste una filiale locale master, quindi non puoi spingerlo. O vuoi spingere un ramo esistente - o creare il ramo principale e poi spingerlo, in questo modo:git checkout -b master; git push -u origin master;
tanius

4
Ho appena ricevuto questo quando ho sbagliato a scrivere il nome della filiale.
Sebastian Ärleryd,

2
Il mio ramo locale era scritto "s h eduler" e lo stavo facendo git push origin scheduler. HA! Una lettera libera ti ucciderà durante la programmazione. lol
protoEvangelion,

35

Per me, seguire ha funzionato per spostare i file non tracciati:

git add --all

Successivamente, ho seguito passaggi simili

 git commit -m "First commit"

Poi,

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

Ultimo ma non meno importante:

git push -u origin master

Mentre lo fai, apparirà la sicurezza di Windows chiedendo il tuo nome utente e password.


1
volevi dire "git add - all` con due trattini
Abdallah Abdillah il

29

Nel mio caso, ho dimenticato di includere il .gitignorefile. Ecco tutti i passaggi richiesti:

  1. Crea un repository Git vuoto sul telecomando,
  2. Su local crea il file .gitignore per il tuo progetto. GitHub ti dà un elenco di esempi qui
  3. Avvia un terminale e nel tuo progetto esegui i seguenti comandi:

    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
    

In che modo l'errore in questione è correlato a .gitignore ?! Se è correlato (di cui dubito fortemente) dovresti spiegarlo nella tua risposta. Grazie
pedram bashiri il

26

Aggiungi un commit iniziale. Segui questi passi:

  • git add .

  • git commit -m "initial commit"

  • git push origin master

Questo ha funzionato per me.


24

Il mio problema era che il ramo "master" non era stato ancora creato localmente.

Un veloce

git checkout -b "master"

creato il ramo principale, a quel punto, una rapida

git push -u origin master

ha spinto il lavoro fino al repository Git.


22

Probabilmente hai dimenticato il comando "git add". dopo il comando "git init".


Inoltre git commitovviamente ...
Bill

20

Ho anche seguito le indicazioni di GitHub come segue, ma ho riscontrato lo stesso errore menzionato dall'OP:

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

Per me, e spero che questo aiuti alcuni, stavo spingendo un file di grandi dimensioni (1.58 GB on disk)sul mio MacOS. Mentre copiavo la riga di codice suggerita sopra, non stavo aspettando che il mio processore finisse effettivamente il add .processo. Quindi quando ho scrittogit commit -m "message" , fondamentalmente non faceva riferimento a nessun file e non ha completato tutto ciò che è necessario fare per eseguire correttamente il commit del mio codice su GitHub.

La prova di ciò è che quando digito di git statussolito ottengo caratteri verdi per i file aggiunti. Ma tutto era rosso. Come se non fosse stato aggiunto affatto.

Quindi ho ripetuto i passaggi. Ho digitato git add .e atteso che i file finissero di essere aggiunti. Quindi ho seguito i passaggi successivi.


19

Questo significa solo che hai dimenticato di fare il commit iniziale, prova

git add .
git commit -m 'initial commit'
git push origin master

per favore, scrivi git commit -m "iniziale commit"
Yash Agrawal,

19
  1. Primo, git add .
  2. Secondo, git commit -m "message"
  3. Terzo, git push origin branch

Si prega di verificare gli errori di ortografia perché ciò potrebbe anche dare quell'errore.


18

Ho avuto lo stesso problema quando mi sono perso a correre:

git add .

(È necessario disporre di almeno un file o si otterrà nuovamente l'errore.)


18

Succede se ti dimentichi di impegnarti prima di spingere per la prima volta. Corri:

git commit -m "first commit"

17

Per verificare lo stato corrente, git status.

E segui anche questi passaggi:

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

16

Questo succede quando hai aggiunto il tuo file, hai dimenticato di eseguire il commit e il push. Quindi eseguire il commit dei file e quindi premere.


14

Ho avuto lo stesso problema. L'ho fatto con i seguenti passaggi:

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

14

Se ricevi questo errore mentre lavori in modalità HEAD staccata, puoi farlo:

git push origin HEAD:remote-branch-name

Vedi anche: Fare una spinta Git da una testa staccata

Se ci si trova in un ramo locale diverso dal ramo remoto, è possibile effettuare ciò:

git push origin local-branch-name:remote-branch-name

13

Nello scenario in cui si estrae il codice da un repository esterno (GitHub) e si desidera importarlo nel sistema personale / interno, questo comando brilla davvero:

git push --all origin

Questo spinge tutte le filiali locali sul telecomando, senza controllare i riferimenti e senza insistere sugli commit.


12

Questo accadrà anche se hai un refuso nel nome del ramo che stai cercando di spingere.


2
Ho il sospetto che molti di noi che sono venuti qui tramite la ricerca sul web abbiano sbagliato a scrivere il nome!
Salvia,

12
git add .

é tutto quello di cui hai bisogno. Quel codice tiene traccia di tutti i file non tracciati nella tua directory.


10

Nel caso in cui stai affrontando questo problema anche dopo aver fatto git inite spinto il tuo commit iniziale. Puoi quindi provare quanto segue,

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

Il tuo codice verrà inserito come un nuovo ramo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.