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/master
in Ihrem lokalen Repo aufgerufen wird ).
git pull
führt zwei Operationen aus; Zuerst wird eine git fetch
Aktualisierung der Commits im Remote-Repo durchgeführt (wodurch die origin/master
Referenz in Ihrem lokalen Repo aktualisiert wird ). Anschließend werden diese git merge
Commits in der aktuellen Verzweigung zusammengeführt.
Bis Sie den fetch
Schritt (entweder alleine oder über git pull
) ausführen, kann Ihr lokales Repo nicht erkennen, dass zusätzliche Commits vorgelagert sind, und betrachtet git status
nur Ihren lokalen origin/master
Ref.
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 fetch
Schritt 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 status
spiegelt 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 status
Ausgabe 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.