2012-12-27 12 views
5

ho biforcuta il repository Flask e clonato la sua filiale sito web da GitHub comegit push di GitHub ramo repository dà l'errore "maestro src refspec non corrisponde a nessuno"

git clone --recursive https://github.com/lovesh/flask.git -b website 

Poi ho configurato a distanza come

git remote add upstream https://github.com/lovesh/flask.git -t website 
git fetch upstream 

Quindi ho apportato le modifiche (non ho creato alcun file aggiuntivo ma modificato 2 file) che ho dovuto fare quindi ho aggiunto i file e ho effettuato le modifiche come questa

git add . 
git commit . 

Questo mi ha richiesto un commento per il commit e ho inserito il commento. Ora mi ha mostrato

2 files changed, 69 insertions(+), 7 deletions(-) 

ma quando provo a spingere questi cambiamenti sul mio conto GitHub

git push origin master 

mostra l'errore

error: src refspec master does not match any. 
error: failed to push some refs to 'https://github.com/lovesh/flask.git' 

mi sono guardato intorno e le persone che hanno avuto questo problema ha dichiarato di non aver effettuato il commit delle modifiche come here e here. Ma ho commesso anche allora mi mostra questo errore. Per confermare che ho provato

git status 

e lo ha dimostrato

# On branch website 
# Your branch is ahead of 'origin/website' by 1 commit. 
# 
nothing to commit (working directory clean) 

anche git log mostra anche il mio impegno nel registro. Sono nuovo di git. Mi sto perdendo qualcosa?

risposta

1

In primo luogo, non si dispone di un ramo principale dopo la clonazione del repository.
git clone dettagli:

--branch <name> 
-b <name> 

Invece di puntare il recente creazione HEAD al ramo puntato da HEAD, scegliere <name> ramo del repository clonato, invece.
In un repository non scarno, questo è il ramo che verrà estratto.
--branch può inoltre accettare tag e scollegare lo HEAD in corrispondenza del commit nel repository risultante.

Quindi nel tuo caso, se si desidera creare e tenere traccia del ramo sito web locale di origine, è necessario:

git push -u origin website 

(dopo che, un semplice git push sarà abbastanza: più sulla politiche push in "git - push current vs. push upstream (tracking)")


vostra altra a distanza 'upstream' anche tenere traccia solo upstream/website ramo:

Il git remote documentazione fa menzione:

Con -t <branch> opzione, al posto del refspec glob di default per il telecomando per tenere traccia di tutti i rami sotto il refs/remotes/<name>/ namespace, un refspec per tenere traccia solo è creato <branch>.
È possibile assegnare più di uno -t <branch> per tenere traccia di più rami senza afferrare tutti i rami.

Nel tuo caso, si sta solo monitorando upstream/website (+refs/heads/website:refs/remotes/upstream/website) al posto del default refspec (+refs/heads/*:refs/remotes/upstream/*).

1

Prova git push origin website Potrebbe essere stato configurato il ramo principale con questo nome. Prova e fammi sapere.

+0

Grazie. Ha funzionato. Ma puoi spiegare come ho configurato il mio ramo principale con questo nome? O è che con 'git push origin 'devo menzionare il nome del ramo a cui sto spingendo? – lovesh

Problemi correlati