O motivo real é que, em um novo repositório (git init), não há ramificação (não master
, nenhuma ramificação, zero ramificação)
Então, quando você está empurrando pela primeira vez a um vazio repo a montante (geralmente um um nu ), que repo montante tem nenhum ramo de mesmo nome.
E:
Nos dois casos, como o repositório vazio a montante não tem ramificação:
- ainda não existe um ramo nomeado correspondente
- não há ramo upstream (com ou sem o mesmo nome! Rastreando ou não)
Isso significa que seu primeiro impulso local não tem idéia:
- onde empurrar
- o que enviar (já que não é possível encontrar nenhuma filial a montante registrada como filial de rastreamento remoto e / ou com o mesmo nome)
Então você precisa pelo menos fazer um:
git push origin master
Mas se você fizer apenas isso, você:
- criará um
master
ramo upstream no upstream (agora repositório não vazio): good.
- não registrará que a ramificação local '
master
' precisa ser enviada para upstream ( origin
) ' master
' (ramificação upstream): incorreta.
É por isso que é recomendado, para o primeiro envio, fazer um:
git push -u origin master
Isso será gravado origin/master
como um ramo de rastreamento remoto e permitirá que o próximo envio seja enviado automaticamente master
para origin/master
.
git checkout master
git push
E isso também funcionará com políticas push ' current
' ou ' upstream
'.
Em cada caso, após o inicial git push -u origin master
, um simples empurrão git será suficiente para continuar empurrando o mestre para o ramo direito a montante.
push.default
, consulteman git-config
). Se você o fizergit config --add push.default current
,git push
criará automaticamente a ramificação no repositório remoto, se necessário. Por que esse não é o padrão, é explicado nas respostas.