Lo que el estado te dice es que estás detrás del árbitro llamado, origin/master que es un árbitro local en tu repositorio local . En este caso, esa referencia pasa a rastrear una rama en algún control remoto, llamado origin, pero el estado no le dice nada sobre la rama en el control remoto. Le informa sobre la referencia, que es solo una ID de confirmación almacenada en su sistema de archivos local (en este caso, generalmente está en un archivo llamado .git/refs/remotes/origin/masteren su repositorio local).
git pullhace dos operaciones; primero hace una git fetchactualización de las confirmaciones en el repositorio remoto (que actualiza la origin/masterreferencia en su repositorio local), luego hace ungit merge para fusionar esas confirmaciones en la rama actual.
Hasta que realice el fetchpaso (ya sea solo o por medio git pull), su repositorio local no tiene forma de saber que hay confirmaciones adicionales en sentido ascendente, y git statussolo mira su origin/masterreferencia local .
Cuando git statusdice actualizado, significa "actualizado con la rama que rastrea la rama actual", que en este caso significa "actualizado con el árbitro local llamado origin/master". Eso solo equivale a "estar actualizado con el estado ascendente que se recuperó la última vez que hicimos un fetch" que no es lo mismo que "actualizado con el último estado en vivo del flujo ascendente".
¿Por qué funciona de esta manera? Bueno, el fetchpaso es una operación de red potencialmente lenta y costosa. El diseño de Git (y otros sistemas de control de versiones distribuidos ) es para evitar operaciones de red cuando no es necesario, y es un modelo completamente diferente al típico sistema cliente-servidor al que muchas personas están acostumbradas (aunque como se señala en los comentarios a continuación, el concepto de Git de una "rama de seguimiento remoto" que causa confusión aquí no es compartida por todos los DVCS). Es completamente posible usar Git sin conexión, sin conexión a un servidor centralizado, y la salida degit status refleja esto.
Se supone que crear y cambiar sucursales (y verificar su estado) en Git es liviano, no algo que realiza una operación de red lenta a un sistema centralizado. La suposición al diseñar Git, y la git statussalida, fue que los usuarios entienden esto (demasiadas características de Git solo tienen sentido si ya sabes cómo funciona Git). Con la adopción de Git por parte de muchos usuarios que no están familiarizados con DVCS, esta suposición no siempre es válida.