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
master
rama 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/master
como una rama de seguimiento remoto , y permitirá a la próxima empuje para empujar de forma automática master
a 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 push
creará automáticamente la rama en el repositorio remoto si es necesario. Por qué este no es el valor predeterminado se explica en las respuestas.