Статус говорит вам о том, что вы находитесь за реф-коллом, origin/master который является локальным рефоном в вашем локальном репо . В этом случае этот ref отслеживает ветку в некотором удаленном, вызываемом origin, но состояние ничего не говорит вам о ветке на удаленном. Он рассказывает вам о ссылке, которая является просто идентификатором фиксации, хранящимся в вашей локальной файловой системе (в данном случае обычно это файл, называемый .git/refs/remotes/origin/masterв вашем локальном репо).
git pullделает две операции; сначала выполняется git fetchобновление с коммитами в удаленном репо (которое обновляет origin/masterссылку в вашем локальном репо), затем выполняется git mergeслияние коммитов с текущей веткой.
Пока вы не выполните этот fetchшаг (самостоятельно или через git pull), ваше локальное хранилище не сможет узнать, что есть дополнительные коммиты в восходящем потоке, и git statusтолько смотрит на ваш локальный origin/masterреф.
Когда git statusговорится актуальный, это означает «актуальный с веткой, которую отслеживает текущая ветвь», что в данном случае означает «актуальный с локальным реф вызванным origin/master». Это приравнивается только к «текущему статусу восходящего потока, который был получен в прошлый раз, когда мы сделали fetch», что не совпадает с «текущим последним статусом восходящего потока».
Почему это работает так? Ну, fetchшаг - потенциально медленная и дорогостоящая работа сети. Конструкция Git (и других распределенных систем управления версиями ) состоит в том, чтобы избегать сетевых операций, когда в этом нет необходимости, и представляет собой совершенно другую модель для типичной системы клиент-сервер, к которой привыкли многие (хотя, как указано в комментариях ниже, концепция Git «удаленной ветви отслеживания», которая вызывает путаницу, не используется всеми DVCS). Вполне возможно использовать Git в автономном режиме, без подключения к централизованному серверу, и результаты git statusотражают это.
Создание и переключение веток (и проверка их состояния) в Git должно быть облегченным, а не тем, что выполняет медленную сетевую работу с централизованной системой. При проектировании Git и его git statusвывода предполагалось , что пользователи это понимают (слишком много функций Git имеют смысл, только если вы уже знаете, как работает Git). С принятием Git многими и многими пользователями, которые не знакомы с DVCS, это предположение не всегда верно.