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.
Este erro é relacionado ao versionamento com Git, e pode acontecer se o seu projeto está em repositório gerenciado no Github, Gitlab ou Bitbucket.
O que significa o erro: src refspec main does not match any
A causa mais comum para o error: src refspec main does not match any é a falta de arquivos no track do projeto, isto é, falta de git commit
. Inclusive pode verificar no Github, clicando em commits se existe algum realizado. Ou listando localmente com o comando git log --oneline
.
Corrigindo o erro: src refspec main não corresponde a nenhum
Precisamos entender a causa para corrigir o erro relacionado ao src refspec não compatível com a ramificação principal ou principal. A seguir, mostro como corrigi-lo dependendo da causa.
Faltando commit antes do push
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
O que fizemos aqui foi criar uma nova branch chamada master com o comando git checkout -b
, e na sequência a enviamos
para o repositório central no Github (por exemplo) com o comando git push
.
Conclusões
Este erro é causado por alguns contextos em seu repositório local: ou você ainda não fez commit de nada ou está tentando enviar um branch que não existe localmente.
Se você conhece outras causas para o erro error: src refspec main does not match any com GIT no Github ou Gitlab, compartilha nos comentários.
Comentários