wake-up-neo.com

Wie lösche ich das letzte n Commit auf Github und lokal?

Ich versuche, die letzten 2 Commits in einem meiner GitHub-Repositorys zu löschen. Ich habe es wie vorgeschlagen versucht hier : git Push -f Origin HEAD ^^: master. Es scheint, dass es funktioniert, die letzten beiden Commits werden entfernt.

Dann habe ich sie mit git rebase -i HEAD ~ 2 aus meinem lokalen Repository gelöscht. Ich entferne die Zeilen, die mit diesen Commits zusammenhängen, und überprüfe mit git log, ob sie korrekt entfernt wurden.

Danach nehme ich einige Änderungen in meinem lokalen Repository vor, führe ein neues Commit durch und drücke auf GitHub. Das Problem ist, dass ich in meinem GitHub-Konto die beiden vorherigen Commits habe, die ich versucht habe zu löschen.

Ich denke, das Problem liegt in meinem lokalen Repository. Wenn ich mein Github-Repository in mein lokales klone und hier einige Änderungen vornehme, wenn ich ein neues Commit übertrage, werden diese alten Commits nicht an GitHub übertragen.

Irgendeine Idee?

98
Ivan Fernandez

Um die letzten beiden Commits lokal zu entfernen, würde ich Folgendes vorschlagen:

git reset --hard HEAD^^

Rebase ist ein völlig anderer Vorgang, der Ihnen hier nicht weiterhilft.

162
KL-7

Wenn Sie die 2 (zwei) letzten Festschreibungen entfernen möchten, gibt es einen einfachen Befehl, um dies zu tun:

git reset --hard HEAD~2

Sie können den 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 mit dem Parameter force (git Push) Einen -f - Befehl ausführen:

git Push -f

Jedoch, Ich empfehle nicht einen git Befehl mit -f Oder --hard Optionen auszuführen, wenn es new gibt Commits auf Remote (Github) after Dies sind Commits, die Sie entfernen möchten. Verwenden Sie in diesem Fall immer git revert.

67
Dherik

Folgendes funktioniert für mich

git reset HEAD~n

Es werden die letzten n Commits aus dem lokalen Repository entfernt, da HEAD^ entfernt nur einen. Wenn Sie diese Änderungen von der Fernbedienung entfernen müssen, müssen Sie möglicherweise Push erzwingen, da Sie sich hinter der Fernbedienung befinden.

git Push -f Origin <branch>
16
Sial01