Erro quando “git push” para github
Pergunta
Eu tenho um repositório público em github.com com 2 ramos: master
e test
Eu criei um novo diretório local e fez:
[ ] git clone git@github.com:{username}/{projectname}.git
Então eu criei um novo ramo chamado my_test
com
[ ] git branch my_test
e ligado a ele.
[ ] git checkout my_test
Então eu fundiu-lo do meu ramo test
do meu repositório público com
[ ] git merge origin/test
e resultou em um avanço rápido.
Eu fiz algumas mudanças e os entregou.
Então eu tentei empurrar o ramo my_test
local para o ramo test
público no github com
[ ] git push git@github.com:{username}/{projectname}.git test
mas eu tenho esse erro:
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
O que estou fazendo de errado?
Solução
Talvez tente:
git push git@github.com:{username}/{projectname}.git HEAD:test
O formato do último parâmetro na linha de comando é uma refspec , que é um ref fonte seguido por dois pontos e, em seguida, o árbitro destino. Você também pode usar seu nome de filial local (my_test
) em vez da cabeça para ter certeza de que você está empurrando o ramo correto.
A documentação para git push
tem mais detalhes sobre este parâmetro.
Outras dicas
Além disso, você não precisa digitar a URL inteira cada vez que você quer empurrar. Quando você executou o clone, git salvo que URL como 'origem', é por isso que você pode executar algo como 'origem merge / test' - isso significa que o ramo 'teste' em seu servidor de 'origem'. Assim, a maneira mais simples para empurrar para o servidor nesse caso seria:
git push origin my_test:test
Isso vai empurrar o seu 'my_test' filial local para o ramo 'teste' em seu servidor de 'origem'. Se você tinha chamado a sua filial local o mesmo que o ramo no servidor, em seguida, os dois pontos não é neccesary, você pode simplesmente fazer:
git push origin test
Este erro também aparece se você tentar empurrar para um novo repositório sem ter cometido alguma coisa pela primeira vez. Tente:
git add -A
git commit -am 'Initial commit'
E, em seguida, tentar a sua pressão novamente.
Eu acho que aqui você terá que configurar o acompanhamento de ramo. Por favor, execute o seguinte para permitir tracking
git branch --track my_test origin/my_test
teste Para
git push -u origin my_test
git pull origin my_test
Você precisa ter certeza de que o seu repositório local tem o mesmo nome que o seu repositório remoto que você está tentando empurrar.
Em primeiro lugar, repositório de mudança usando -m git branch "teste" para que "my_test" seria "teste". Em segundo lugar, apenas git push origin teste