Antworten:
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 -fdas Update erzwingen.
revertIhre 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 --hardauch, dass die Feature-Zweige als bereits zusammengeführt behandelt werden? Ich gehe davon aus, dass dies nicht der Fall ist (wo revert).
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:
git push origin old_master:master
Wenn es ein bestimmtes Commit SHA1 gibt (z. B. 1e4f99e in Kurzform), möchten Sie zu Folgendem zurückkehren:
git push origin 1e4f99e:master
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
error: failed to push some refs to 'ssh://git@gitrepo.git'
To prevent you from losing history, non-fast-forward updates were rejected*
Durch Hinzufügen der -fOption force ( ) wird dieser Fehler jedoch überschrieben
git push -f origin 52e36b294e:master
Wenn Sie direkten Zugriff auf das Remote-Repo haben, können Sie immer Folgendes verwenden:
git reset --soft <sha1>
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?
git reset --hard [sha1]Folgendes verwenden: wobei sha1 die Commit-Hash-ID ist.