¿Por qué tengo que "git push --set-upstream origin <branch>"?

Creé una sucursal local para probar Solaris y Sun Studio. Luego empujé la rama río arriba. Después de cometer un cambio e intentar impulsar los cambios:

$ git commit blake2.cpp -m "Add workaround for missing _mm_set_epi64x"
[solaris 7ad22ff] Add workaround for missing _mm_set_epi64x
 1 file changed, 5 insertions(+)
$ git push
fatal: The current branch solaris has no upstream branch.
To push the current branch and set the remote as upstream, use

    git push --set-upstream origin solaris

¿Por qué tengo que hacer algo especial para esto?

¿Hay algún caso de uso razonable en el que alguien cree<branch>, empuja el<branch> a distancia, y luego reclamar un compromiso en<branch> no se supone que sea para<branch>?

Seguí esta pregunta y respuesta en Stack Overflow:Empuje una nueva sucursal local a un repositorio Git remoto y realice un seguimiento también. Supongo que es otra instancia de una respuesta aceptada incompleta o incorrecta. O bien, es otra instancia de Git que toma una tarea simple y la dificulta.

Aquí está la vista en una máquina diferente. La rama existe claramente, por lo que fue creada y empujada:

$ git branch -a
  alignas
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/alignas
  remotes/origin/arm-neon
  remotes/origin/det-sig
  remotes/origin/master
  remotes/origin/solaris

Respuestas a la pregunta(2)

Su respuesta a la pregunta