Status mówi ci, że jesteś za wywołanym ref, origin/master który jest lokalnym ref w twoim lokalnym repozytorium . W takim przypadku ref ma miejsce śledzenie gałęzi w jakimś zdalnym, zwanym origin, ale status nie mówi ci nic o gałęzi na pilocie. Mówi ci o ref, który jest tylko identyfikatorem zatwierdzenia przechowywanym w twoim lokalnym systemie plików (w tym przypadku zazwyczaj jest to plik zwany .git/refs/remotes/origin/masterw twoim lokalnym repozytorium).
git pullwykonuje dwie operacje; najpierw wykonuje git fetchaktualizację zatwierdzeń w zdalnym repozytorium (które aktualizuje origin/masterref w lokalnym repozytorium), a następnie git mergełączy te zatwierdzenia z bieżącym oddziałem.
Dopóki nie zrobisz tego fetchkroku (samodzielnie lub za pośrednictwem git pull), twoje lokalne repozytorium nie ma sposobu, aby wiedzieć, że istnieją dodatkowe zatwierdzenia w górę, i git statuspatrzy tylko na twój lokalny origin/masterref.
Kiedy git statusmówi „na bieżąco”, oznacza „na bieżąco z odgałęzieniem śledzonym przez bieżący oddział”, co w tym przypadku oznacza „na bieżąco z lokalnym refaktorem o nazwie origin/master”. To tylko równoznaczne jest z „aktualnym statusem nadrzędnym, który został pobrany po raz ostatni fetch”, który nie jest tym samym, co „aktualny z aktualnym stanem nadrzędnym”.
Dlaczego to działa w ten sposób? Dobrze fetchkrokiem jest potencjalnie powolna i kosztowna operacja sieciowa. Projekt Git (i innych rozproszonych systemów kontroli wersji ) ma na celu uniknięcie operacji sieciowych, gdy jest to niepotrzebne, i jest zupełnie innym modelem niż typowy system klient-serwer, do którego przywykło wielu ludzi (chociaż, jak wskazano w komentarzach poniżej, koncepcja Gita „zdalnej gałęzi śledzenia”, która powoduje zamieszanie, nie są wspólne dla wszystkich DVCS). Korzystanie z Git w trybie offline jest całkowicie możliwe, bez połączenia ze scentralizowanym serwerem, a wynik działania git statusodzwierciedla to.
Tworzenie i przełączanie gałęzi (i sprawdzanie ich statusu) w Git powinno być lekkie, a nie czymś, co wykonuje powolne operacje sieciowe na scentralizowanym systemie. Założeniem przy projektowaniu Gita i danych git statuswyjściowych było to, że użytkownicy to rozumieją (zbyt wiele funkcji Git ma sens tylko wtedy, gdy wiesz już, jak działa Git). Wraz z przyjęciem Git przez wielu użytkowników, którzy nie znają DVCS, to założenie nie zawsze jest aktualne.