481 Stimmen

git: Dein Zweig ist um X Commits voraus

Wie kommt das eigentlich zustande?

Ich arbeite im Moment nur an einem Repo, also ist dies mein Arbeitsablauf:

  1. Dateien ändern
  2. Commit
  3. Wiederholen Sie 1-2, bis Sie zufrieden sind.
  4. Zum Master schieben

Wenn ich dann eine git status wird mir mitgeteilt, dass mein Zweig um X Übertragungen voraus (vermutlich die gleiche Anzahl von Übertragungen, die ich vorgenommen habe). Liegt es daran, dass beim Pushen des Codes die lokal zwischengespeicherten Dateien (in den .git-Ordnern) nicht wirklich aktualisiert werden? git pull scheint diese seltsame Meldung zu "beheben", aber ich bin immer noch neugierig, warum es passiert, vielleicht benutze ich git falsch?


einschließlich der Verzweigung, die in der Nachricht gedruckt wird

Mein lokaler Zweig ist dem Master voraus

Wohin schieben/ziehen Sie den aktuellen Zweig?

Ich schiebe auf GitHub und ziehe auf den Computer, an dem ich gerade arbeite. Meine lokale Kopie ist immer auf dem neuesten Stand, da ich der einzige bin, der daran arbeitet.

es prüft nicht wirklich das entfernte Projektarchiv

Das habe ich mir auch gedacht, aber ich wollte mich vergewissern, dass ich es richtig verstanden habe.

Übergeben Sie dem Programm zusätzliche Argumente?

Keine, die ich sehen kann. Vielleicht läuft bei mir eine komische Konfiguration ab?

$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
nothing to commit (working directory clean)

538voto

Rich Punkte 7008

Wenn Sie diese Meldung erhalten, nachdem Sie eine git pull remote branch versuchen Sie es mit einer anschließenden git fetch . (Optional können Sie auch git fetch -p um gelöschte Zweige aus dem Repo zu entfernen)

Fetch scheint die lokale Repräsentation des entfernten Zweigs zu aktualisieren, was nicht unbedingt passiert, wenn Sie eine git pull remote branch .

218voto

Marian Zburlea Punkte 8581

Verwenden Sie

git pull --rebase

Die Option --rebase bedeutet, dass Git Ihren lokalen Commit beiseite schiebt, mit dem entfernten synchronisiert und dann versucht, Ihre Commits vom neuen Zustand aus anzuwenden.

168voto

Abhishek Goel Punkte 16695

Verwenden Sie diese 3 einfachen Befehle

Schritt 1 : git checkout <branch_name>

Schritt 2 : git pull -s recursive -X theirs

Schritt 3 : git reset --hard origin/<branch_name>

Mehr Details : https://stackoverflow.com/a/39698570/2439715

Viel Spaß!

64voto

Das hat bei mir funktioniert

git reset --hard origin/master

Die Ausgabe muss wie folgt aussehen

On branch dev HEAD is now at ae1xc41z Last commit message

54voto

Josh Lee Punkte 159535

Ich glaube, Sie missverstehen die Botschaft - Ihr Zweig ist nicht vor dem master es ist master . Es liegt vor origin/master die ein Zweigstelle für Fernüberwachung die den Status des entfernten Repositorys von Ihrem letzten push , pull または fetch . Sie sagt Ihnen genau, was Sie getan haben: Sie sind der Fernbedienung zuvorgekommen und sie erinnert Sie daran, weiterzumachen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X