Das Manipulieren des Verlaufs kommt bei Entwicklern, die regelmäßig mit Git arbeiten, häufig vor. Tatsächlich müssen Entwickler häufig Commits aus dem Git-Verlauf entfernen. Glücklicherweise stellt Git viele Befehle bereit, um diesen Vorgang zu ermöglichen.
Lasst uns loslegen 😎.
Schritt 0 – Vorbereitung
Bevor Sie den Git-Verlauf manipulieren, stellen Sie mit dem Befehl git status sicher, dass Ihr Arbeitsverzeichnis frei von Änderungen ist.
Schritt 1 – Commits lokal löschen
Um Commits von einem Remote-Server zu löschen, müssen Sie sie zunächst aus Ihrem lokalen Verlauf entfernen.
1.1 Für aufeinanderfolgende Commits von oben
Wenn die Commits, die Sie entfernen möchten, ganz oben in Ihrem Commit-Verlauf stehen, verwenden Sie den Befehl git reset --hard
mit dem HEAD
Objekt und der Anzahl der Commits, die Sie entfernen möchten.
git reset --hard HEAD~1
Dieser Befehl entfernt den letzten Commit .
git reset --hard HEAD~3
Dieser Befehl entfernt die letzten drei Commits .
Sie können auch bis zu einem bestimmten Commit entfernen, indem Sie den Hash eines Commits verwenden, etwa so:
git reset --hard <hash>
1.2 Für nicht aufeinanderfolgende Commits
Wenn Sie jedoch nicht aufeinanderfolgende Commits entfernen möchten, müssen Sie eine interaktive Rebase verwenden.
- [ ] Suchen Sie mit dem Befehl
git reflog
den letzten Commit-Hash, der alle Commits enthält, die Sie entfernen möchten. - [ ] Starten Sie eine interaktive Rebase mit
git rebase -i <hash>
. - [ ] Suchen Sie im Bearbeitungsbildschirm die Commit-Zeilen, die Sie entfernen möchten, und entfernen Sie sie.
- [ ] Speichern und beenden (möglicherweise müssen Sie die Konflikte lösen)
- [ ] Beenden Sie das interaktive Rebase mit
git rebase --continue
oder beginnen Sie von vorne, indem Sie das Rebase abbrechen .
Schritt 2 – Löschen Sie die Commits aus der Ferne
Um Commits aus der Ferne zu löschen, müssen Sie Ihre lokalen Änderungen mit dem Befehl „git push“ auf die Ferne übertragen.
git push origin HEAD --force
Da Ihr lokaler Verlauf vom Remote-Verlauf abweicht, müssen Sie die force
Option verwenden.
Abschließende Gedanken
Wie Sie sehen, erleichtert Git das Löschen von Commits von einem Remote-Server.
Sie müssen jedoch vorsichtig sein, wenn Sie den Befehl git push
mit der Option „ force
verwenden, da Sie den Fortschritt verlieren könnten, wenn Sie nicht vorsichtig sind.
Vielen Dank fürs Lesen!