Die Nachricht 'src refspec master stimmt mit keiner überein' beim Pushing von Commits in Git

2689

Ich klone mein Repository mit:

git clone ssh://xxxxx/xx.git 

Aber nachdem ich einige Dateien und addund commitsie geändert habe, möchte ich sie auf den Server übertragen:

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

Aber der Fehler, den ich zurück bekomme, ist:

error: src refspec master does not match any.  
error: failed to push some refs to 'ssh://xxxxx.com/project.git'
Sinoohe
quelle
26
@Marco Das ist kein Duplikat. Dies ist ein sehr spezifisches Problem beim Verschieben eines lokalen Zweigs in einen Remote-Zweig. In diesem Fall geht es darum, ein Repo zu initialisieren und nach oben zu verschieben. Sie erzeugen den gleichen Fehler, aber die GRÜNDE, die sie diesen Fehler erzeugen, und die Korrekturen sind völlig unterschiedlich. Außerdem, Sinoohe, solltest du eine Antwort akzeptieren. Wahrscheinlich der erste, der die Frage beantwortet und über 350 Menschen geholfen hat.
Tandrewnichols
Haben Sie Ihre git config-Befehle so eingerichtet, dass git global auf Ihrem Computer installiert und konfiguriert wird?
Igor Ganapolsky
1
Hoffe, dieser Beitrag wäre für jemanden nützlich - samranga.blogspot.com/2015/07/… Der Fehler in der Frage kann auch dann auftreten, wenn versucht wird, ein Git-BitBucket-Repository aus einem bereits lokal vorhandenen Projekt zu erstellen
Samitha Chathuranga
Ich habe diesen Fehler beim Versuch erhalten, den falschen Filialnamen zu drücken. Gelöst mit git status, um die richtige zu bekommen.
Tom Howard
5
Noch eine einfache Aufgabe, die Git erschwert hat. Die Git-Entwickler sollten Stack Overflow als Feedback in ihrer SDLC-Schleife verwenden. Über 850.000 Menschen sollten angeben, dass etwas mit dem Git-Workflow nicht stimmt. Sie müssen einen UX-Experten einstellen, weil sie es eindeutig nicht alleine schaffen können.
JWW

Antworten:

4140

Vielleicht müssen Sie sich nur festlegen. Ich bin darauf gestoßen, als ich es tat:

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

Hoppla! Nie begangen!

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

Alles was ich tun musste war:

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

Erfolg!

Baisong
quelle
130
Befolgen Sie diesen Schritt nicht einfach blind, schauen Sie sich an, was @Vi erwähnt hat, und ändern Sie dann Ihren Push-Befehl, um ref zu korrigieren.
Kumar
49
Der wahrscheinlichste Grund für diesen Fehler ist, dass alle Dateien nicht verfolgt werden und nicht hinzugefügt wurden. git add --allfalls Sie alle Dateien hinzufügen möchten Oder Sie können selektiv Dateien hinzufügen. Dann git commit -m "Initial comment", git push origin master. Das wird sicher funktionieren.
Bhanu Pratap Singh
6
Behebt ein anderes Problem, das nett ist, aber nicht wirklich eine Antwort auf diese eigentliche Frage.
Michael Durrant
7
git commit -m 'initial commit'sollte doppelt zitiert werden. ' git commit -m "initial commit", zumindest an Fenstern.
Dance2die
5
Ein weiterer möglicher Grund: Sie haben eigentlich keinen Zweig namens Master
CarlosAS
843
  1. Versuchen Sie git show-refzu sehen, welche Refs Sie haben. Gibt es eine refs/heads/master?

  2. Sie können versuchen git push origin HEAD:master, eine lokal referenzunabhängigere Lösung zu finden. Dies besagt ausdrücklich, dass Sie die lokale Referenz HEADan die Remote -Referenz senden möchten master(siehe die Dokumentation zu git-push refspec ).

Vi.
quelle
6
Mein Hauptzweig war nicht über Commits! Also habe ich einen Zweig erstellt, der am Ende aller Zweige war, und ich habe sie auf den Server geschoben:
Sinoohe
10
Git Checkout -b Testzweig; Git Push Origin Testbranch: Master
Sinoohe
101
git show-refzeigte meinen Zweig; das git push origin HEAD:<branch>hat bei mir funktioniert.
Glen Solsberry
5
Du hast mich gerade gerettet, Vi. Danke für git push origin HEAD:master. Aber warum git push --force origin masterfunktioniert so etwas nicht?
Shkschneider
4
@ gms8994 - du bist richtig. Wenn jemand als erstes einen Zweig erstellt, anstatt ihn in den Master zu verschieben, wird derselbe unfriendlyFehler angezeigt. Verwenden Sie git push origin <branch>statt für den masterFall, dass Sie versuchen, git checkout -b <branch>vor einem ersten Push nach dem erstengit remote add origin <url>
asyncwait
225

Ich hatte auch einen ähnlichen Fehler, nachdem ich alle Dateien auf meinem lokalen Computer gelöscht hatte, und ich muss alle Dateien im Repository bereinigen.

Meine Fehlermeldung war ungefähr so:

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

Und es wurde gelöst, indem die folgenden Befehle ausgeführt wurden:

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
quelle
10
Die anderen Antworten lösten nicht das Problem, das ich hatte (zum Beispiel hatte ich diesen Fehler bereits begangen und hatte ihn immer noch), aber es git push origin BRANCH --forcefunktionierte. Vielen Dank!
Lemmings19
Siehe diese frühere Antwort . Ich vermute, dass Sie eine Datei hinzufügen mussten, weil git keine leeren Verzeichnisse verfolgt.
3
push --force könnte auch die harte Arbeit der Mitarbeiter völlig umhauen. Warnung hinzugefügt.
Michael Durrant
3
Dies löste mein Problem. Ich denke, git add hat es geschafft. Während das Schieben von Dingen auf den ersten Blick nichts erkennt, hatte ich vielleicht deshalb das Problem. Der Befehl git add hat mein Problem gelöst. auch danach konnte ich ohne --force pushen. Vielen Dank Aryo
Anandaraja_Srinivasan
203
  1. Meine Änderungen wurden bereits festgeschrieben
  2. Force Push gab mir immer noch den gleichen Fehler.

Also habe ich Vis Lösung ausprobiert :

git push origin HEAD:<remoteBranch> 

Das hat bei mir funktioniert.

tldr
quelle
19
Ich fand schließlich heraus, dass es daran lag, dass ich den Filialnamen falsch geschrieben hatte. Ich habe erfolgreich Zweig A zum Ursprung mit einem Zweig namens B mit verschoben git push origin HEAD:B, aber ich habe immer noch den gleichen Fehler, wenn ich mit git push originZweig A
Yi H.
1
@YiHuang, ugh danke, ich habe meinen Filialnamen schon einmal überprüft und ihn dann aufgrund Ihres Kommentars erneut überprüft - hatte das gleiche Problem und habe es falsch geschrieben.
Seenare
1
@ YiH.i war sich sicher, dass mein Filialname korrekt ist, aber ich habe ihn nur überprüft, nachdem ich Ihren Kommentar gelesen habe und mein schlechtes - hat das gleiche Problem.
Null Pointer
125
git push -u origin master
error: src refspec master does not match any.

Dazu müssen Sie die Commit-Nachricht wie folgt eingeben und dann den Code drücken:

git commit -m "initial commit"

git push origin master

Erfolgreich zum Meister gedrängt.

VIKAS KOHLI
quelle
Ich habe überprüft, ob es funktioniert. Bitte ignorieren Sie die Option -u und versuchen
Sie es
Das Problem hier scheint völlig anders zu sein als bei den OPs ... aber es scheint, dass viele, einschließlich mir, dieses Problem hatten.
ZX9
110

Für mich musste ich sicherstellen, dass der öffentliche Schlüssel auf dem Server (in ~ / .ssh / authorized_keys angehängt) und in GitHub / Bitbucket (hinzugefügt zu meinen SSH-Schlüsseln auf GitHub oder Bitbucket) richtig konfiguriert ist - sie müssen übereinstimmen.

Dann:

git add --all :/

git commit -am 'message'

git push -u origin master

Am Ende hat es bei mir funktioniert.

rot
quelle
88

Ich fand dies in einem brandneuen Repository, nachdem ich Git nur ein Verzeichnis hinzugefügt hatte.

Sobald ich eine Datei hinzugefügt habe (z. B. eine README-Datei), hat Git Push hervorragend funktioniert.

Andrew E.
quelle
6
Dies funktioniert wahrscheinlich, weil git keine Verzeichnisse verfolgt, sondern nur Dateien. Wenn ein Verzeichnis leer ist, fügt git es nicht hinzu.
1
Das OP hat eine Datei (xx.php) hinzugefügt, sodass dies in diesem Fall nicht das Problem war, obwohl dies in anderen Fällen ein Problem sein kann und das Hinzufügen einer Datei eine Lösung für dieses Problem darstellt.
Michael Durrant
1
Eine so einfache Lösung für ein frustrierendes Problem. Ich habe die Erstellung und das Klonen von Repos getestet und leere Verzeichnisse erstellt, keine Dateien.
James Wierzba
1
8 Jahre später ersparte mir das Kopfschmerzen!
Rvictordelta
In meinem Fall 1 -> git init 2 ---> git add origin .... etc 3 ---> git git push -u origin master ===> Dann habe ich den obigen Fehler erhalten. ===> Dann habe ich folgende 2 Befehle ausgeführt, es ist verschwunden. ---> git add * ---> git commit -m "Einige Nachrichten" ---> git git push -u Ursprungsmaster ===> Hat in meinem Fall gut funktioniert.
Rao
67

Fehlt oder überspringt git add .oder git commitkann diesen Fehler verursachen:

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'

Um das Problem zu beheben, initialisieren Sie es neu und befolgen Sie die richtige Reihenfolge:

git init
git add .
git commit -m 'message'
git *create remote
git push -u origin master
aug2uag
quelle
Das ist richtig, das Geschäftsende ist genauer git remote add __REMOTE_NAME__ __URL_OR_SSH__und über dem entfernten Namen steht "Ursprung"
aug2uag
1
Sie fügten hinzu und engagierten sich in ihrer Frage, so dass dies nicht das Problem war, obwohl dies anderen Menschen hilft.
Michael Durrant
Diese Antwort funktionierte jedoch aufgrund der -uhier verwendeten Option.
Michael Durrant
63

Um das Problem zu beheben, initialisieren Sie es neu und befolgen Sie die richtige Codesequenz:

git init
git add .
git commit -m 'message'
git push -u origin master
Pratik Kumar
quelle
55

Stellen Sie sicher, dass Sie zuerst hinzugefügt haben, und legen Sie dann fest:

Mögen:

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

Dies passiert auch, wenn Sie sich in einem bestimmten Zweig befinden und versuchen, einen anderen Zweig zu pushen, der noch nicht vorhanden ist, wie z.

$ 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
quelle
3
LOL. Ich habe versucht, zum Ursprungsmaster zu pushen, aber dieser Zweig existierte nicht. Es wurde Ursprungsstabil genannt.
Penner
1
Das hat -uvielleicht hier geholfen.
Michael Durrant
1
Im obigen Fall besteht das Problem natürlich darin, dass es keinen lokalen Zweig gibt master, sodass Sie ihn nicht pushen können. Sie möchten entweder einen vorhandenen Zweig verschieben - oder den Hauptzweig erstellen und dann wie git checkout -b master; git push -u origin master;
folgt verschieben
4
Ich habe das gerade bekommen, als ich den Filialnamen falsch geschrieben habe.
Sebastian Ärleryd
2
Mein lokaler Zweig wurde "s h eduler" geschrieben und ich tat es git push origin scheduler. HA! Ein Buchstabe entfernt bringt Sie bei der Programmierung um. lol
protoEvangelion
43

Ich hatte das gleiche Problem und benutzte --allow-empty:

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

Ergänzung

Einer der Hauptgründe für dieses Problem ist, dass bei einigen Git-Servern, wie z. B. BitBucket, der masterZweig nicht initialisiert wird, wenn ein neues Repository geklont wird.

Jin Kwon
quelle
35

Für mich hat Folgendes funktioniert, um nicht verfolgte Dateien zu verschieben:

git add --all

Als nächstes folgte ich ähnlichen Schritten

 git commit -m "First commit"

Dann,

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

Last but not least:

git push -u origin master

Währenddessen wird die Windows-Sicherheit angezeigt und Sie werden nach Ihrem Benutzernamen und Kennwort gefragt.

Areeha
quelle
1
Meinten Sie "git add --all" mit zwei Strichen
Abdallah Abdillah
29

In meinem Fall habe ich vergessen, die .gitignoreDatei einzuschließen. Hier sind alle erforderlichen Schritte:

  1. Erstellen Sie ein leeres Git-Repository auf Remote,
  2. Erstellen Sie lokal die Gitignore-Datei für Ihr Projekt. GitHub bietet Ihnen hier eine Liste von Beispielen
  3. Starten Sie ein Terminal und führen Sie in Ihrem Projekt die folgenden Befehle aus:

    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.
quelle
Wie hängt der betreffende Fehler mit .gitignore zusammen?! Wenn es verwandt ist (was ich sehr bezweifle), sollten Sie es in Ihrer Antwort erklären. Danke
pedram bashiri
26

Fügen Sie einfach ein erstes Commit hinzu. Folge diesen Schritten:

  • git add .

  • git commit -m "initial commit"

  • git push origin master

Das hat bei mir funktioniert.

NeeruKSingh
quelle
24

Mein Problem war, dass der 'Master'-Zweig noch nicht lokal erstellt wurde.

Ein schneller

git checkout -b "master"

erstellt den Master-Zweig, an welchem ​​Punkt eine schnelle

git push -u origin master

schob die Arbeit auf das Git-Repository.

Anthony
quelle
22

Sie haben wahrscheinlich den Befehl "git add" vergessen. nach dem Befehl "git init".

Sumer
quelle
Plus git commitnatürlich ...
Bill
19

Dies bedeutet nur, dass Sie vergessen haben, das erste Commit durchzuführen. Versuchen Sie es

git add .
git commit -m 'initial commit'
git push origin master
xuri
quelle
Bitte schreiben Sie Git Commit -m "Initial Commit"
Yash Agrawal
19
  1. Zuerst, git add .
  2. Zweite, git commit -m "message"
  3. Dritte, git push origin branch

Bitte überprüfen Sie, ob Rechtschreibfehler vorliegen, da dies auch zu diesem Fehler führen kann.

Alwan Mortada
quelle
19

Ich habe auch die Anweisungen von GitHub wie folgt befolgt, aber ich habe immer noch denselben Fehler festgestellt, wie er vom OP erwähnt wurde:

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

Für mich, und ich hoffe, das hilft einigen, habe ich eine große Datei (1.58 GB on disk)auf meinem MacOS gepusht. Während ich die oben vorgeschlagene Codezeile kopierte, wartete ich nicht darauf, dass mein Prozessor den add .Vorgang tatsächlich abschloss . Also als ich tipptegit commit -m "message" , verwies es im Grunde genommen nicht auf Dateien und hat nicht alles abgeschlossen, was nötig ist, um meinen Code erfolgreich auf GitHub zu übertragen.

Der Beweis dafür ist, als ich tippte git status normalerweise grüne Schriftarten für die hinzugefügten Dateien erhalte. Aber alles war rot. Als ob es überhaupt nicht hinzugefügt worden wäre.

Also habe ich die Schritte überarbeitet. Ich tippte git add .und wartete, bis die Dateien fertig waren. Dann folgte ich den nächsten Schritten.

Gel
quelle
18

Ich hatte das gleiche Problem, als ich versäumt habe zu rennen:

git add .

(Sie müssen mindestens eine Datei haben, sonst wird der Fehler erneut angezeigt.)

neoDev
quelle
18

Es passiert, wenn Sie vergessen, sich zu verpflichten, bevor Sie zum ersten Mal pushen. Renn einfach:

git commit -m "first commit"
Badr Bellaj
quelle
17

Um den aktuellen Status zu überprüfen, git status .

Befolgen Sie auch diese Schritte:

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

Dies geschieht, wenn Sie Ihre Datei hinzugefügt, das Festschreiben und Pushen vergessen haben. Also die Dateien festschreiben und dann pushen.

user993563
quelle
14

Ich hatte das gleiche Problem. Ich habe es mit den folgenden Schritten gemacht:

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
quelle
14

Wenn Sie diesen Fehler erhalten, während Sie im getrennten HEAD-Modus arbeiten, können Sie Folgendes tun:

git push origin HEAD:remote-branch-name

Siehe auch: Einen Git-Push von einem abgetrennten Kopf ausführen

Wenn Sie sich in einem anderen lokalen Zweig als dem Remote-Zweig befinden, können Sie Folgendes tun:

git push origin local-branch-name:remote-branch-name
einrasten
quelle
13

In dem Szenario, in dem Sie den Code aus einem externen Repository (GitHub) auschecken und in ein persönliches / internes System importieren möchten, leuchtet dieser Befehl wirklich:

git push --all origin

Dadurch werden alle lokalen Zweige an die Fernbedienung weitergeleitet, ohne die Refs zu überprüfen und ohne auf Commits zu bestehen.

d.raev
quelle
12

Dies ist auch der Fall, wenn der Filialname, den Sie verschieben möchten, einen Tippfehler enthält.

Gavin
quelle
2
Ich vermute, dass sehr viele von uns, die über die Websuche hierher gekommen sind, den Namen tatsächlich falsch eingegeben haben!
Salbei
12
git add .

ist alles, was du brauchst. Dieser Code verfolgt alle nicht verfolgten Dateien in Ihrem Verzeichnis.

Jäger
quelle
10

Für den Fall, dass Sie auch nach dem Ausführen git initund Drücken Ihres ersten Commits mit diesem Problem konfrontiert sind . Sie können dann Folgendes versuchen:

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

Ihr Code wird als neuer Zweig verschoben.

Govind
quelle