Ich versuche, die letzten 2 Commits aus einem meiner GitHub-Repositorys zu löschen. Ich habe es wie hier vorgeschlagen versucht : git push -f origin HEAD^^:master
. Es scheint, dass es funktioniert, da die letzten beiden Commits entfernt werden.
Dann habe ich sie aus meinem lokalen Repository mit gelöscht git rebase -i HEAD~2
. Ich entferne die Zeilen, die sich auf diese Commits beziehen, und überprüfe, git log
ob sie korrekt entfernt wurden.
Danach nehme ich einige Änderungen in meinem lokalen Repository vor, mache ein neues Commit und drücke auf GitHub. Das Problem ist, dass ich in meinem GitHub-Konto die beiden vorherigen Commits habe, die ich zu löschen versucht habe.
Ich denke, das Problem liegt in meinem lokalen Repository, denn wenn ich mein Github-Repository in mein lokales Repository klone und hier einige Änderungen vornehme, werden diese alten Commits beim Push eines neuen Commits nicht an GitHub übertragen.
Irgendeine Idee?
git reset --hard HEAD^4
oder tungit reset --hard HEAD~4
. Es kann jedoch etwas kompliziert werden, wenn Ihr Verlauf Zusammenführungen enthält. Weitere Informationen zum Festlegen von Revisionen finden Sie im entsprechenden Abschnitt hier .git reset --hard HEAD~7
, aber bitte korrigiere mich, wenn ich falsch liege .Wenn Sie die 2 (zwei) letzten Commits entfernen möchten, gibt es einen einfachen Befehl, um dies zu tun:
Sie können die
2
für eine beliebige Anzahl von letzten Commits ändern, die Sie entfernen möchten.Und um diese Änderung auf remote zu übertragen, müssen Sie a
git push
mit dem Parameter force (-f
) ausführen:Allerdings empfehle ich nicht jeden zu tun
git
Befehl mit-f
oder--hard
Optionen beteiligt , wenn es neue Commits auf Remote (Github) nach diesen Commits , dass Sie entfernen möchten. In diesem Fall immer verwendengit revert
.quelle
hard
Befehl ausgeführt haben, verlieren Sie diese beiden Commits. Wenn Sie die Änderungen speichern möchten, erstellen Sie einediff
Datei mit diesen Commits, bevor Sie den Reset anwenden.git reset HEAD~5
(nicht verwendenhard
). Auf diese Weise erhalten Sie Ihre Änderungen in einem bereitgestellten Zustand (dh nicht festgeschrieben). Für mich sehen Sie diese Antwort .Folgendes funktioniert für mich
Es entfernt die letzten
n
Commits aus dem lokalen Repo, daHEAD^
nur eines entfernt wird. Wenn Sie diese Änderungen von der Fernbedienung entfernen müssen, müssen Sie möglicherweise Push erzwingen, da Sie sich hinter der Fernbedienung befinden.quelle