A mensagem de erro: “error: src refspec main does not match any” acontece por algumas causas rotineiramente comuns, principalmente ao iniciar um novo repositório de projeto.
Uma segunda linha de mensagem com o texto: “error: failed to push some refs to ‘github.com:nunomazer/meu-repositorio.git'” também pode aparecer na stack de erros.
Faltando commit antes do push
A causa mais usual é a falta de arquivos no track do projeto, isto é, falta de git commit
.
Sim, simples assim, ao iniciar um projeto, e adicionar os arquivos, se não é realizado o commit dos mesmos antes de tentar enviar (git push
) os mesmos ao repositório central, o git informa que falta refspec
para o branch (main ou master).
Para resolver então basta seguir a sequência usual:
git init
git remote add origin [email protected]:nunomazer/meu-repositorio.git
git branch -M main
git add .
git commit -m 'feat: My first feature'
git push -u origin main
Na sequência de exemplo, considerando um repositório novo, os passos foram:
- Iniciar o repositório localmente
- Adicionar o caminho do repositório remoto
- Alterar o nome da branch para
main
(necessário apenas se está usando uma versão do Git que cria a branch principal como master) - Adicionar os arquivos alterados
- Fazer o commit dos arquivos
- Finalmente o push (enviar) para o repositório, agora sem erros
Os passos principais para evitar o erro portanto são o 4 e 5.
Tentativa de push de uma branch para outra
A mensagem de erro: “error: src refspec main does not match any” também acontece caso você esteja em uma branch especifica localmente e tenta realizar o push em outra branch remota, que ainda não existe.
Algo como:
git branch
* version-x # you are in this branch
version-y
git push -u origin master
error: src refspec master does not match any.
error: failed to push some refs to 'origin_address'
No exemplo acima ao chamar git branch
as branches version-x e version-y foram listadas, isto é, são as branches que existem localmente.
Ao tentar fazer um push em master o erro acontece pois a branch master não existe localmente.
Portanto, ou você faz o git push
de uma branch exstente, ou cria a master (neste caso) e então a envia:
git checkout -b master
git push -u origin master
Se você conhece outras causas para o erro “error: src refspec main does not match any” compartilha nos comentários.