La razón real es que, en un nuevo repositorio (git init), no hay rama (no master, ninguna rama, cero ramas)
Entonces, cuando está presionando por primera vez a un repositorio ascendente vacío (generalmente uno desnudo ), ese repositorio ascendente no tiene una rama del mismo nombre.
Y:
En ambos casos, dado que el repositorio vacío ascendente no tiene rama:
- todavía no hay una rama nombrada coincidente
- no hay ninguna rama ascendente (¡con o sin el mismo nombre! Seguimiento o no)
Eso significa que su primer impulso local no tiene idea:
- donde empujar
- qué empujar (ya que no puede encontrar ninguna rama ascendente que se registre como una rama de seguimiento remota y / o que tenga el mismo nombre)
Entonces necesita al menos hacer un:
git push origin master
Pero si solo haces eso, tú:
- creará una
masterrama ascendente en el ascendente (ahora repositorio no vacío): bueno.
- no registrará que la rama local '
master' necesita ser empujada a upstream ( origin) ' master' (rama ascendente): mal.
Es por eso que se recomienda, para el primer impulso, hacer un:
git push -u origin master
Que registrará origin/mastercomo una rama de seguimiento remoto , y permitirá a la próxima empuje para empujar de forma automática mastera origin/master.
git checkout master
git push
Y eso también funcionará con las políticas de empuje ' current' o ' upstream'.
En cada caso, después de la inicial git push -u origin master, un simple git push será suficiente para continuar empujando master a la rama aguas arriba derecha.
push.default, verman git-config). Si lo hacegit config --add push.default current,git pushcreará automáticamente la rama en el repositorio remoto si es necesario. Por qué este no es el valor predeterminado se explica en las respuestas.