Ich habe ein entferntes Git-Repository und muss die letzten n
Commits in Vergessenheit geraten lassen.
111
Sie können git revert <commit>…
für alle n Commits verwenden und dann wie gewohnt pushen, wobei der Verlauf unverändert bleibt.
Oder Sie können mit "zurückrollen" git reset --hard HEAD~n
. Wenn Sie in ein öffentliches oder freigegebenes Repository pushen, können Sie aufgrund Ihres ursprünglichen Zweigs von anderen Arbeiten abweichen und diese unterbrechen. Git wird Sie daran hindern, aber Sie können git push -f
das Update erzwingen.
git reset --hard [sha1]
Folgendes verwenden: wobei sha1 die Commit-Hash-ID ist.revert
Ihre Feature-Zweige als "bereits" zusammengeführt behandelt werden. Das ist , weil diese Zweige sind verschmolzen tatsächlich sind. Aber die Änderungen wurden rückgängig gemacht. Lösung: Kirsche-Pick oder die revert begehen zurückkehren .reset --hard
auch, dass die Feature-Zweige als bereits zusammengeführt behandelt werden? Ich gehe davon aus, dass dies nicht der Fall ist (worevert
).elmarco ist richtig ... sein Vorschlag ist der beste für gemeinsam genutzte / öffentliche Repositories (oder zumindest öffentliche Zweige). Wenn es nicht geteilt wurde (oder Sie bereit sind, andere zu stören), können Sie auch einen bestimmten Verweis drücken:
Wenn es ein bestimmtes Commit SHA1 gibt (z. B. 1e4f99e in Kurzform), möchten Sie zu Folgendem zurückkehren:
quelle
Glücklicherweise war ich in der Lage, Pat Notz 'Lösung zu verwenden, die das unerwünschte Commit vollständig beseitigte. Zunächst bekam ich jedoch den Fehler
Durch Hinzufügen der
-f
Option force ( ) wird dieser Fehler jedoch überschriebenquelle
Wenn Sie direkten Zugriff auf das Remote-Repo haben, können Sie immer Folgendes verwenden:
Dies funktioniert, da nicht versucht wird, das nicht vorhandene Arbeitsverzeichnis zu ändern. Weitere Details finden Sie in der Originalantwort:
Wie kann ich das letzte Commit in einem Git Bare-Repository aufheben?
quelle
--soft
überhaupt notwendig sein? Sie könnten wahrscheinlich dasselbe mit einfachemgit reset
Modus ohne das Modus-Flag tun .