O que o status está dizendo é que você está atrás do árbitro chamado, origin/master que é um árbitro local no seu repositório local . Nesse caso, ref faz o rastreamento de uma filial em algum controle remoto, chamado origin, mas o status não está informando nada sobre a filial no controle remoto. Ele está falando sobre a ref, que é apenas um ID de confirmação armazenado em seu sistema de arquivos local (nesse caso, normalmente está em um arquivo chamado .git/refs/remotes/origin/masterem seu repositório local).
git pullfaz duas operações; primeiro, ele faz git fetcha atualização das confirmações no repositório remoto (que atualiza a origin/masterreferência no repositório local) e, em seguida, faz git mergea mesclagem dessas confirmações na ramificação atual.
Até você executar a fetchetapa (por conta própria ou via git pull), seu repositório local não tem como saber que existem confirmações adicionais a montante e git statusapenas analisa a origin/masterreferência local .
Quando git statusatualizado, significa "atualizado com a ramificação que a ramificação atual rastreia", que neste caso significa "atualizado com a referência local chamada origin/master". Isso equivale a "atualizado com o status upstream que foi recuperado da última vez que fizemos um fetch" que não é o mesmo que "atualizado com o status ao vivo mais recente do upstream".
Por que funciona dessa maneira? Bem, o fetchpasso é uma operação de rede potencialmente lenta e cara. O design do Git (e outros sistemas de controle de versão distribuído ) é evitar operações de rede quando desnecessárias e é um modelo completamente diferente do sistema cliente-servidor típico ao qual muitas pessoas estão acostumadas (embora, como indicado nos comentários abaixo, o conceito do Git de um "ramo de rastreamento remoto" que causa confusão aqui não é compartilhado por todos os DVCSs). É totalmente possível usar o Git offline, sem conexão com um servidor centralizado, e a saída git statusreflete isso.
Criar e alternar ramificações (e verificar seu status) no Git deve ser leve, não algo que execute uma operação de rede lenta para um sistema centralizado. A suposição ao projetar o Git, e a git statussaída, era que os usuários entendessem isso (muitos recursos do Git só fazem sentido se você já sabe como o Git funciona). Com a adoção do Git por muitos e muitos usuários que não estão familiarizados com o DVCS, essa suposição nem sempre é válida.