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)

4voto

The Code Father Punkte 116

Ich hatte das gleiche Problem auf einem Windows-Rechner. Als ich eine git pull origin master erhielt ich die Warnung "Vor 'origin/master' um X Commits". Ich fand heraus, dass ich, wenn ich stattdessen git pull origin und den Zweig NICHT angeben, dann würde ich die Warnung nicht mehr erhalten.

3voto

Ich möchte dasselbe wiederholen, was @Marian Zburlia oben erwähnt hat. Es hat bei mir funktioniert und ich würde es auch anderen empfehlen.

git pull origin develop

sollte gefolgt werden von $ git pull --rebase .

Dadurch werden die Kommentare, die auf der Seite $ git status nach dem letzten Pull.

3voto

git fetch wird das Problem für Sie lösen

Wenn ich es richtig verstanden habe, ist Ihr lokaler (zwischengespeicherter) origin/master ist nicht mehr aktuell. Mit diesem Befehl wird der Repository-Status auf dem Server aktualisiert.

2voto

FPGA-guy Punkte 45

Wenn ich dann einen Git-Status ausführe, sagt er mir, dass mein Zweig um X Commits voraus ist (vermutlich die gleiche Anzahl von Verpflichtungen, die ich eingegangen bin ).

Ich habe Erfahrung in einer Teamumgebung mit vielen Zweigen. Wir arbeiten in unseren eigenen Funktionszweigen (in lokalen Klonen) und es war einer von denen, die git status zeigte, dass ich 11 Zusagen voraus war. Meine Arbeitsannahme war, wie der Autor der Frage, dass +11 von Eigene Übertragungen .

Es stellte sich heraus, dass ich die Änderungen aus der gemeinsamen develop Zweig in meinen Feature-Zweig zu integrieren - aber vergessen! Als ich heute meinen lokalen Funktionszweig wieder aufsuchte und eine git pull origin develop sprang die Zahl auf +41 Übertragungen vor. Viel Arbeit war geleistet worden in develop und so war mein lokaler Funktionszweig dem Funktionszweig auf dem Server noch weiter voraus origin Repository.

Wenn Sie also diese Meldung erhalten, denken Sie an alle Pulls/Mergs zurück, die Sie von anderen Zweigen (Ihrem eigenen oder anderen), auf die Sie Zugriff haben, durchgeführt haben. Die Nachricht signalisiert nur, dass Sie Folgendes tun müssen git push die pull änderungen zurück in die origin Repo ('Tracking Branch') von Ihrem lokalen Repo, um die Dinge zu synchronisieren.

2voto

Dustin Graham Punkte 1994

Das ist mir tatsächlich passiert, als ich einen Wechsel/Checkout mit TortiseGIT durchgeführt habe.

Mein Problem war, dass ich den Zweig auf der Grundlage eines anderen lokalen Zweigs erstellt hatte. Dadurch wurde ein "Merge"-Eintrag in /.git/config die in etwa so aussah:

[branch "web"]
    merge = refs/heads/develop
    remote = gitserver

Jedes Mal, wenn ich zum "Web"-Zweig wechselte, wurde mir angezeigt, dass ich der Entwicklung um 100+ Commits voraus war. Nun, ich war nicht mehr zu entwickeln, so dass das wahr war. Ich konnte diesen Eintrag einfach entfernen und es scheint wie erwartet zu funktionieren. Es verfolgt die Remote-Referenz ordnungsgemäß, anstatt sich darüber zu beschweren, dass ich hinter dem Entwicklungszweig liege.

Wie Vikram sagte, ist dieser Stack Overflow-Thread das Top-Ergebnis in Google bei der Suche nach diesem Problem, also dachte ich, ich würde meine Situation und Lösung teilen.

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