2009-06-06 7 views
22

J'ai un référentiel public sur github.com avec 2 branches: master et test.Erreur lors de "git push" à github

J'ai créé un nouveau répertoire local et a fait:

[ ] git clone [email protected]:{username}/{projectname}.git 

Ensuite, je crée une nouvelle branche nommée my_test avec

[ ] git branch my_test 

et commuté à elle.

[ ] git checkout my_test 

alors je fusionné de mon test branche de mon dépôt public

[ ] git merge origin/test 

et il a donné lieu à une avance rapide.

J'ai apporté quelques modifications et les ai validées. Alors j'ai essayé de pousser la branche locale my_test à la branche test public github avec

[ ] git push [email protected]:{username}/{projectname}.git test 

mais j'eu cette erreur:

error: src refspec test does not match any. 
fatal: The remote end hung up unexpectedly 
error: failed to push some refs to '[email protected]:{username}/{projectname}.git 

Qu'est-ce que je fais mal?

+0

double possible de [maître src refspec ne correspond pas en poussant commits dans git] (http://stackoverflow.com/questions/4181861/src-refspec-master-does-not -match-any-when-pushing-commits-en-git) –

+0

Possible copie de [Poussez l'erreur principale d'origine sur le nouveau référentiel] (http://stackoverflow.com/q/827351/456814). –

Répondre

30

Peut-être essayer:

git push [email protected]:{username}/{projectname}.git HEAD:test 

Le format du dernier paramètre sur cette ligne de commande est un refspec qui est une ref source suivi par deux points, puis l'arbitre de destination. Vous pouvez également utiliser le nom de votre branche locale (my_test) au lieu de HEAD pour être sûr que vous appuyez sur la bonne branche.

La documentation de git push contient plus de détails sur ce paramètre.

+0

Thats travaillé. Je vous remercie. – ebsbk

+0

Ca a marché comme un charme :) –

+0

Je ne comprends pas. Pourquoi cela fonctionne-t-il en utilisant HEAD, mais pas en utilisant le nom de ma branche locale? –

17

De plus, vous n'avez pas besoin de taper l'URL entière chaque fois que vous voulez pousser. Lorsque vous avez exécuté le clone, git a sauvegardé cette URL en tant qu'origine, c'est pourquoi vous pouvez exécuter quelque chose comme 'fusionner origine/test' - cela signifie la branche 'test' sur votre serveur 'origin'. Ainsi, la façon la plus simple de pousser à votre serveur dans ce cas serait:

git push origin my_test:test 

qui poussera votre branche locale « my_test » à la branche « test » sur votre serveur « origine ». Si vous aviez appelé votre succursale locale la même chose que la branche sur le serveur, le colon n'est pas neccesary, vous pouvez simplement faire:

git push origin test 
1

Je pense ici, vous aurez besoin de mettre en place le suivi de la branche. S'il vous plaît exécutez les commandes suivantes pour activer le suivi

git branch --track my_test origin/my_test 

Pour tester

git push -u origin my_test 
git pull origin my_test 
1

Cette erreur est également si vous essayez de pousser vers un nouveau référentiel sans avoir rien commis d'abord.Essayez:

git add -A 
git commit -am 'Initial commit' 

Ensuite, réessayez.

0

Vous devez vous assurer que votre référentiel local porte le même nom que votre référentiel distant que vous essayez de transmettre. Tout d'abord, changez de dépôt en utilisant git branch -m "test" pour que "my_test" soit "test". En second lieu, juste git pousser test d'origine

Questions connexes