Der Status sagt Ihnen, dass Sie hinter dem angerufenen Schiedsrichter stehen, origin/master der ein lokaler Schiedsrichter in Ihrem lokalen Repo ist . In diesem Fall verfolgt diese Referenz einen Zweig in einer Fernbedienung, die aufgerufen wird origin, aber der Status sagt nichts über den Zweig auf der Fernbedienung aus. Es handelt sich um die Referenz, bei der es sich lediglich um eine Festschreibungs-ID handelt, die in Ihrem lokalen Dateisystem gespeichert ist (in diesem Fall normalerweise in einer Datei, die .git/refs/remotes/origin/masterin Ihrem lokalen Repo aufgerufen wird ).
git pullführt zwei Operationen aus; Zuerst wird eine git fetchAktualisierung der Commits im Remote-Repo durchgeführt (wodurch die origin/masterReferenz in Ihrem lokalen Repo aktualisiert wird ). Anschließend werden diese git mergeCommits in der aktuellen Verzweigung zusammengeführt.
Bis Sie den fetchSchritt (entweder alleine oder über git pull) ausführen, kann Ihr lokales Repo nicht erkennen, dass zusätzliche Commits vorgelagert sind, und betrachtet git statusnur Ihren lokalen origin/masterRef.
Wenn git status"aktuell" angezeigt wird, bedeutet dies "aktuell mit dem Zweig, den der aktuelle Zweig verfolgt", was in diesem Fall "aktuell mit dem aufgerufenen lokalen Verweis origin/master" bedeutet. Dies entspricht nur "aktuell mit dem Upstream-Status, der beim letzten Mal abgerufen wurde fetch", was nicht mit "aktuell mit dem neuesten Live-Status des Upstreams" identisch ist.
Warum funktioniert das so? Nun, der fetchSchritt ist ein potenziell langsamer und teurer Netzwerkbetrieb. Das Design von Git (und anderen verteilten Versionskontrollsystemen ) dient dazu, Netzwerkoperationen zu vermeiden, wenn dies nicht erforderlich ist, und ist ein völlig anderes Modell als das typische Client-Server-System, an das viele Menschen gewöhnt sind (obwohl, wie in den Kommentaren unten ausgeführt, das Konzept von Git eines "Remote Tracking Branch", der hier Verwirrung stiftet, wird nicht von allen DVCSs geteilt). Es ist durchaus möglich, Git offline ohne Verbindung zu einem zentralen Server zu verwenden, und die Ausgabe von git statusspiegelt dies wider.
Das Erstellen und Wechseln von Zweigen (und das Überprüfen ihres Status) in Git soll einfach sein und nicht einen langsamen Netzwerkbetrieb für ein zentrales System ausführen. Die Annahme beim Entwerfen von Git und der git statusAusgabe war, dass Benutzer dies verstehen (zu viele Git-Funktionen sind nur dann sinnvoll, wenn Sie bereits wissen, wie Git funktioniert). Mit der Einführung von Git durch viele, viele Benutzer, die mit DVCS nicht vertraut sind, ist diese Annahme nicht immer gültig.