Beim Laufen bekomme ich folgendes git status
Your branch is ahead of 'origin/master' by 3 commits.
Ich habe in einem anderen Beitrag gelesen git pull --rebase
, wie das Problem behoben wird, aber was genau ist Rebase. Verliere ich Daten oder ist dies eine einfache Möglichkeit, mit dem Master zu synchronisieren?
git
git-rebase
FluxEngine
quelle
quelle
Antworten:
Sie erhalten diese Nachricht, weil Sie Änderungen an Ihrem lokalen Master vorgenommen und diese nicht auf die Fernbedienung übertragen haben. Sie haben mehrere Möglichkeiten, es zu "lösen", und es hängt normalerweise davon ab, wie Ihr Workflow aussieht:
git push origin
dass der Ursprung Ihre Fernbedienung istgit reset --hard origin/master
quelle
git diff master origin/master
(dhgit diff local remote
), um Änderungen zu sehen, die Sie entfernen werdengit push origin master:branch
dem zurückgegebenenEverything up-to-date
, danach verschwand die Nachricht, dass x Commits voraus sind.Es gibt nichts zu beheben. Sie haben einfach 3 Commits vorgenommen und diese noch nicht in den Remote-Zweig verschoben. Es gibt verschiedene Möglichkeiten, je nachdem, was Sie tun möchten:
git push
: Verschieben Sie Ihre Änderungen auf die Fernbedienung (dies wird möglicherweise abgelehnt, wenn bereits andere Änderungen auf der Fernbedienung vorhanden sind.)git pull
: Holen Sie sich die Änderungen (falls vorhanden) von der Fernbedienung und führen Sie sie in Ihre Änderungen eingit pull --rebase
: wie oben, aber versuchen Sie, Ihre Commits zusätzlich zu den Remote-Änderungen zu wiederholenSie befinden sich in einer klassischen Situation (obwohl Sie in den meisten Workflows normalerweise nicht viel für den Master tun würden). Folgendes würde ich normalerweise tun: Überprüfen Sie meine Änderungen. Vielleicht machen Sie ein
git rebase --interactive
paar Kosmetika auf ihnen, lassen Sie diejenigen fallen, die saugen, ordnen Sie sie neu, um sie logischer zu machen. Bewegen Sie sie nun mit auf die Fernbedienunggit push
. Wenn dies abgelehnt wird, weil meine lokale Niederlassung nicht auf dem neuesten Stand ist:git pull --rebase
Wiederholen Sie meine Arbeit zusätzlich zu den letzten Änderungengit push
.quelle
your team lead merged to master
? Hast du nicht gesagt, dass du schon zum Meister gedrängt hast? Was enthält das zusätzliche Commit? Versuchen Sie herauszufindengit diff origin/master
, wie sich Ihr lokaler Zweig von der Fernbedienung unterscheidet.Verwenden Sie diese 4 einfachen Befehle
Schritt 1 :
git checkout <branch_name>
Dies ist offensichtlich, um in diesen Zweig zu gehen.
Schritt 2 :
git pull -s recursive -X theirs
Nehmen Sie Änderungen an Remote-Zweigen vor und ersetzen Sie diese durch Änderungen, wenn Konflikte auftreten. Wenn Sie dies tun, erhalten
git status
Sie so etwas wie Ihre Niederlassung um 3 Commits vor 'origin / master'.Schritt 3 :
git reset --hard origin/<branch_name>
Schritt 4 :
git fetch
Setzen Sie Ihren Zweig hart zurück.
Genießen.
quelle
Ist auf dieses Problem gestoßen, nachdem ich eine Pull-Anfrage für Bitbucket zusammengeführt habe.
Musste tun
und das war es.
quelle
Wenn ich überprüfen muss, welche Commits sich vom Master unterscheiden, mache ich normalerweise Folgendes:
Auf diese Weise kann ich die Commits sehen und entscheiden, sie fallen zu lassen oder auszuwählen ...
quelle
git diff ...
Magie würde nicht funktionieren. Als ich das tat, gab es mirnoop
als einziges Commit, und als ich es akzeptierte, ist mein Zweig jetzt mit origin / master synchron. Es scheint also, dass die vom Ursprung / Master abweichenden Commits tatsächlich nichts waren.Diese Nachricht von
git
bedeutet, dass Sie drei Commits in Ihrem lokalen Repo vorgenommen und diese nicht immaster
Repository veröffentlicht haben. Der dafür auszuführende Befehl lautetgit push {local branch name} {remote branch name}
.Die Befehle
git pull
(undgit pull --rebase
) gelten für die andere Situation, in der auf dem Remote-Repo ein Commit ausgeführt wird, das Sie in Ihrem lokalen Repo nicht haben. Die--rebase
Option bedeutet, dassgit
Ihr lokales Commit beiseite geschoben, mit dem Remote-Repo synchronisiert und dann versucht wird, Ihre drei Commits aus dem neuen Status anzuwenden. Es kann fehlschlagen, wenn ein Konflikt vorliegt, aber Sie werden aufgefordert, diese zu beheben. Sie können den Vorgang auch abbrechen,rebase
wenn Sie nicht wissen, wie die Konflikte mithilfe von gelöst werden können,git rebase --abort
und Sie kehren vor dem Ausführen zum Status zurückgit pull --rebase
.quelle
Wenn dein Idiot sagt, dass du voraus bist, dann erstmal,
Um sicherzustellen, dass Sie alle Ihre neuesten Arbeiten in Repo gepusht haben
Dann,
Zurücksetzen und Abgleichen mit dem Repo
quelle
Dies ist mir einmal passiert, nachdem ich eine Pull-Anfrage auf Bitbucket zusammengeführt habe.
Ich musste nur tun:
git fetch
Mein Problem wurde gelöst. Ich hoffe das hilft!!!
quelle
endlich:
quelle