In diesem Beitrag erfahren Sie, wie Sie Commits aus einem Git-Zweig löschen.,et
Die Idee hier ist, das Zurücksetzen des Arbeitsverzeichnisses zu erzwingen, um alle Commits zu entfernen, die nach dem angegebenen Commit kommen, und dann einen force push durchzuführen:
1
|
git reset –hard
|
Sie können über seine Abstammung auf ein Commit verweisen oder seinen vollständigen SHA-1-Hash verwenden oder den Teilhash angeben, der mindestens 4 Zeichen lang und eindeutig sein sollte.,
1
2
3
4
|
# Verwerfen Sie die ersten 4 Commits
git reset –hard HEAD~4
|
Wenn diese Commits im Remote-Repository vorhanden sind, müssen Sie den Hard Reset erzwingen zum Remote-Repository.,
1
2
3
4
|
# Force Push updates to the remote repository
git push
|
Here’s a live example:
Note, that any changes made in the working directory since the last commit are silently discarded., Um dies zu vermeiden, speichern Sie zuerst Ihre lokalen Änderungen, indem Sie den Befehl git-stash
aufrufen, der wiederum das Arbeitsverzeichnis nach dem Speichern Ihrer lokalen Änderungen in die Revision HEAD
zurücksetzt. git reset --hard HEAD
wird häufig verwendet, um alle nicht festgeschriebenen Änderungen zu löschen, die dem neuesten Commit im Arbeitsverzeichnis entsprechen.
Falls Sie Ihre Arbeit behalten und das Commit nur rückgängig machen möchten, können Sie die Option --soft
verwenden.,
1
|
git reset –soft
|
This is demonstrated below:
git revert
It is not a good idea to do a force push on a public or a shared repository; do a git-revert
instead., Es erstellt ein neues Commit, das alle in einem bestimmten Commit vorgenommenen Änderungen rückgängig macht, und wendet es dann auf den aktuellen Zweig an.,iv id=“e6e72cc751″>
Here’s a live example:
Interactive Rebasing
Another plausible way of removing comments is using git-rebase
command.,
1
|
git rebase-i
|
Die Ausführung des obigen Befehls öffnet einen Editor mit allen Commits in Ihrem aktuellen Zweig, die nach dem angegebenen Commit erfolgen. Um ein Commit zu löschen, ersetzen Sie einfach den Befehl ‚pick‘ durch ‚drop‘ und schließen Sie den Editor. Sie können auch einfach die passende Zeile löschen.,
Der folgende Befehl entfernt ein ganzes Commit e78d8b1
auf einmal mit --rebase-merges
Modus mit --onto
Option.,
1
|
git rebase -r –onto e78d8b1^ e78d8b1
|
(20 votes, average: 5.,00 von 5)
Danke fürs Lesen.