Ce que le statut vous dit, c'est que vous êtes derrière l'arbitre appelé, origin/master qui est un arbitre local dans votre référentiel local . Dans ce cas, cette référence arrive à suivre une branche dans une télécommande, appelée origin, mais l'état ne vous dit rien sur la branche sur la télécommande. Il vous parle de la référence, qui n'est qu'un ID de validation stocké sur votre système de fichiers local (dans ce cas, il se trouve généralement dans un fichier appelé .git/refs/remotes/origin/masterdans votre référentiel local).
git pullfait deux opérations; tout d'abord, il effectue une git fetchmise à jour des validations dans le référentiel distant (qui met à jour la origin/masterréférence dans votre référentiel local), puis il git mergefusionne ces validations dans la branche actuelle.
Tant que vous ne faites fetchpas l' étape (seule ou via git pull), votre référentiel local n'a aucun moyen de savoir qu'il y a des commits supplémentaires en amont et git statusne regarde que votre origin/masterréférence locale .
Quand git statusdit à jour, cela signifie "à jour avec la branche que la branche actuelle suit", ce qui signifie dans ce cas "à jour avec la référence locale appelée origin/master". Cela équivaut seulement à "à jour avec le statut en amont qui a été récupéré la dernière fois que nous avons fait un fetch" qui n'est pas la même chose que "à jour avec le dernier statut en direct de l'amont".
Pourquoi ça marche comme ça? Eh bien, l' fetchétape est une opération réseau potentiellement lente et coûteuse. La conception de Git (et d'autres systèmes de contrôle de version distribués ) vise à éviter les opérations réseau lorsque cela n'est pas nécessaire, et est un modèle complètement différent du système client-serveur typique auquel de nombreuses personnes sont habituées (bien que, comme indiqué dans les commentaires ci-dessous, le concept de Git d'une "branche de suivi à distance" qui provoque ici une confusion n'est pas partagée par tous les DVCS). Il est tout à fait possible d'utiliser Git hors ligne, sans connexion à un serveur centralisé, et la sortie de git statusreflète cela.
La création et la commutation de branches (et la vérification de leur état) dans Git est censée être légère, pas quelque chose qui effectue une opération réseau lente vers un système centralisé. L'hypothèse lors de la conception de Git et de la git statussortie était que les utilisateurs le comprennent (trop de fonctionnalités Git n'ont de sens que si vous savez déjà comment Git fonctionne). Avec l'adoption de Git par de nombreux utilisateurs qui ne connaissent pas le DVCS, cette hypothèse n'est pas toujours valable.