Errore quando “git push” per GitHub
Domanda
Ho un archivio pubblico a github.com con 2 rami: master
e test
ho creato una nuova directory locale e fatto:
[ ] git clone git@github.com:{username}/{projectname}.git
Poi ho creato una nuova filiale denominata my_test
con
[ ] git branch my_test
e acceso ad esso.
[ ] git checkout my_test
Poi ho fuso dal mio ramo test
del mio repository pubblico
[ ] git merge origin/test
e si è tradotto in un avanzamento rapido.
Ho fatto alcuni cambiamenti e li ha commessi.
Poi ho provato a spingere il ramo my_test
locale al ramo test
pubblico presso github con
[ ] git push git@github.com:{username}/{projectname}.git test
, ma ho ottenuto questo errore:
error: src refspec test does not match any.
fatal: The remote end hung up unexpectedly
error: failed to push some refs to 'git@github.com:{username}/{projectname}.git
Che cosa sto facendo di sbagliato?
Soluzione
Forse provare:
git push git@github.com:{username}/{projectname}.git HEAD:test
Il formato del ultimo parametro su quella linea di comando è un refspec , che è una fonte Rif seguito da due punti e poi l'arbitro destinazione. È inoltre possibile utilizzare il nome del ramo locale (my_test
) al posto della testa per essere certi si sta spingendo il ramo corretto.
La documentazione per git push
ha più dettagli su questo parametro.
Altri suggerimenti
Inoltre, non è necessario digitare l'intero URL ogni volta che si vuole spingere. Quando è stato eseguito il clone, git salvato che URL, 'origine', è per questo che è possibile eseguire qualcosa di simile a 'unire origine / test' - significa che il ramo 'test' sul server 'di origine'. Quindi, il modo più semplice per spingere al server in questo caso sarebbe:
git push origin my_test:test
che spingerà il vostro 'my_test' filiale locale al ramo 'test' sul server 'di origine'. Se tu avessi chiamato la filiale locale lo stesso come il ramo sul server, quindi i due punti non è neccesary, semplicemente si può fare:
git push origin test
Questo errore è disponibile anche su se si cerca di spingere per un nuovo repository, senza aver commesso nulla prima. Prova:
git add -A
git commit -am 'Initial commit'
E poi tentare di nuovo la vostra spinta.
Credo che qui è necessario impostare il monitoraggio ramo. Si prega di eseguire quanto segue per abilitare il monitoraggio
git branch --track my_test origin/my_test
Per testare
git push -u origin my_test
git pull origin my_test
È necessario assicurarsi che il repository locale hanno lo stesso nome del repository remoto si sta cercando di spingere.
In primo luogo, il cambiamento repository utilizzando git branch -m "test" in modo che "my_test" sarebbe "test". In secondo luogo, proprio git push test di origine