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
masterramo 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/mastercomo um ramo de rastreamento remoto e permitirá que o próximo envio seja enviado automaticamente masterpara 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 pushcriará automaticamente a ramificação no repositório remoto, se necessário. Por que esse não é o padrão, é explicado nas respostas.