2016-12-26 1 views
2

Ich habe versucht, dies:git push neue Datei zu einem bloßen Repo fehlgeschlagen: "Fehler: src refspec Master stimmt mit keinem überein." Warum?

mkdir ~/gitremote 
cd ~/gitremote 
git init --bare 

ich Dateinamen wie

HEAD  config  hooks  objects 
branches description info  refs 

OK, dann in einem anderen Verzeichnis sehen,

git clone [email protected]:/Users/trosky/gitremote 
vi readme (add one line) 
git add . 
git commit -m "1st file" 
git push origin master 

Dann gibt es einen Fehler:

$git push origin master 
error: src refspec master does not match any. 
error: failed to push some refs to '[email protected]:/Users/trosky/gitremote' 

Ich suchte Google und es sagt, dass diese Art von Fehler wegen leeren Ordner auf Remote-Repo ist. Aber der Remote-Repo ist nicht leer, und lokal beginne ich eine Datei, die auch nicht leer ist. Warum wird dieser Fehler immer noch angezeigt?

Wie es zu beheben? Vielen Dank.

+0

Was ist das Betriebssystem? Wenn es sich um MAC handelt, verwenden Sie stattdessen 'git clone/Users/trosky/gitremote'. Wenn es sich um Windows handelt, verwenden Sie stattdessen git clone 'C: \ Users \ trosky/\ gitremote', wenn Sie ein Windows-Benutzer sind. Und Sie können 'git remote -v' verwenden, um zu überprüfen, ob der Pfad korrekt ist. –

+0

Dank Marina, Ihr "Git Klon" Vorschlag funktioniert wish git push, aber der Remote-Repo scheint keine neue Datei zu empfangen. Ich bin auf MAC, aber was ist der Unterschied zwischen 'git clone/Benutzer/trosky/gitremoe' und 'git clone' trosy @ localhost:/Benutzer/trosky/gitremote '? – Troskyvs

+0

@Troskyvs, antwortete ich wie folgt, überprüfen Sie bitte die Commit sha-1 im Remote-Ordner. –

Antwort

2

mit der Syntax Versuchen:

git push -u origin master 

Da Sie in einem leeren Repo drängen, müssen Sie explicitly push master.
Andernfalls wird die default push.policy being simple, Git für einen Zweig master in Ihrer Remote-Repo genannt aussehen würde (und da Remote-bare Repo leer ist, hat es keinen master Zweig noch)

Natürlich, werden Sie keine readme sehen in Ihrem remote bare Repo, da es sich um ein blankes Repo handelt: kein funktionierender Baum.

what's the difference between 'git clone /Users/trosky/gitremoe' and 'git clone '[email protected]:/Users/trosky/gitremote'

Eine davon ist die Datei-Protokoll auch local protocol, die andere ssh protocol genannt. Du brauchst hier kein ssh.

+0

Danke, aber ich habe immer noch das gleiche Problem: $ git push -u Ursprung Master Fehler: src refspec Master passt nicht zu irgendwelchen. Fehler: Es ist mir nicht gelungen, einige Refs auf 'x @ localhost:/Users/trosky/gitremote' zu schieben – Troskyvs

+0

@Troskyvs sind Sie im 'gitremote'-Ordner Ihres geklonten Repos? (und nicht in '/ Users/trosky/gitremote'). Was gibt 'git status' zurück? – VonC

+0

Nun, ich habe gerade überprüft, ja, Sie sind auf dem Punkt, SHA-1 unter meinem bloßen Repo von Refs/Heads/Master-Datei zu überprüfen. – Troskyvs

0

Sie können stattdessen git clone /Users/trosky/gitremote verwenden.

git clone /Users/trosky/gitremote wird das lokale Protokoll verwendet. Da sich Ihr remoterepo auf Ihrem lokalen PC befindet, ist das lokale Protokoll geeignet und schnell.

git clone '[email protected]:/Users/trosky/gitremote' wird SCP zur Übertragung von Daten verwendet, die in erster Linie für verschiedene Geräte der Datenübertragung verwendet.

Nachdem Sie auf Remote-Repo gedrängt haben, können Sie in den Remote-Repo-Ordner gehen, aber die gepushte Datei nicht finden. Aber es existiert tatsächlich. Denn bare Repo hat kein Arbeitsverzeichnis. Es ist in /Users/trosky/gitremote/objects gespeichert. Und Sie können überprüfen, dass die Festschreibung SHA-1 in /Users/trosky/gitremote/refs/heads/master in Übereinstimmung mit lokalen Repo ist.

+0

Ja, ich habe das in meiner Antwort schon erwähnt. – VonC

+0

Nicht genau, und ich gebe es in meinem Kommentar zuerst. –

Verwandte Themen