Ich habe ein nicht nacktes "Haupt" -Repo eingerichtet und auf meinen Computer geklont. Ich habe einige lokale Änderungen vorgenommen, mein lokales Repository aktualisiert und die Änderungen zurück auf mein Remote-Repo übertragen. Bis zu diesem Punkt war alles in Ordnung.
Jetzt musste ich etwas im Remote-Repo ändern. Dann habe ich etwas in meinem lokalen Repo geändert. Mir wurde klar, dass die Änderung am Remote-Repo nicht erforderlich war. Also habe ich versucht, git push
von meinem lokalen Repo zu meinem Remote-Repo zu wechseln, aber ich habe eine Fehlermeldung erhalten wie:
Um zu verhindern, dass Sie den Verlauf verlieren, wurden Aktualisierungen ohne schnellen Vorlauf abgelehnt. Führen Sie die Remote-Änderungen zusammen, bevor Sie sie erneut übertragen. Weitere
git push --help
Informationen finden Sie im Abschnitt "Hinweis zum Schnellvorlauf" .
Ich dachte das wahrscheinlich ein
git push --force
würde meine lokale Kopie zwingen, Änderungen an der Remote-Kopie zu übertragen und sie gleich zu machen. Das Update wird zwar erzwungen , aber wenn ich zum Remote-Repo zurückkehre und ein Commit durchführe, stelle ich fest, dass die Dateien veraltete Änderungen enthalten (die das Haupt-Remote-Repo zuvor hatte).
Wie ich in den Kommentaren zu einer der Antworten erwähnt habe :
[Ich] habe versucht zu erzwingen, aber wenn ich zum Master-Server zurückkehre, um die Änderungen zu speichern, bekomme ich veraltetes Staging. Wenn ich also festschreibe, sind die Repositorys nicht gleich. Und wenn ich versuche, Git Push erneut zu verwenden, erhalte ich den gleichen Fehler.
Wie kann ich dieses Problem beheben?
git push --force
ist dies in der Tat eine weitere gültige Methode, um Push zu erzwingen, und es werden genauso viele Zweige wie git push origin master --force
mit der Standardeinstellung push.default config settings
von Git gepusht. Welche Zweige speziell verschoben werden, unterscheidet sich jedoch zwischen den Git-Versionen vor 2.0 und nach 2.0.
git push --force
funktioniert heutzutage gut, FWIW ...
git push --force-with-lease
funktioniert noch besser :), es wird sich weigern, einen Zweig zu aktualisieren, es sei denn, es ist der Zustand, den Sie erwarten. (siehe developer.atlassian.com/blog/2015/04/force-with-lease )
git push -force
sorgfältiger zu tun .