Setzen Sie das Git-Repository auf einen vorherigen Commit zurück
- Entfernen Sie unveröffentlichte Commits, um das Git-Repository auf einen früheren Commit zurückzusetzen
- Entfernen Sie veröffentlichte Commits, um das Git-Repository auf einen früheren Commit zurückzusetzen
In diesem Artikel werden die verschiedenen Möglichkeiten erläutert, wie Sie ein Git-Repository auf einen früheren Commit zurücksetzen können. Mit Git können Sie fast alles rückgängig machen.
Wir werden uns sowohl das lokale als auch das Remote-Repository ansehen und wie Sie unveröffentlichte und veröffentlichte Commits rückgängig machen können.
Entfernen Sie unveröffentlichte Commits, um das Git-Repository auf einen früheren Commit zurückzusetzen
Unveröffentlichte Commits sind einfach die Commits in Ihrem lokalen Repository, die noch nicht in das Remote-Repository gepusht wurden. Wir werden ein Beispiel verwenden, um dieses Konzept zu erklären.
Beispiel 1:
Unten ist der Commit-Verlauf in unserem lokalen Repository. Beachten Sie die Kombination, die jeder Commit-Nachricht gegeben wird.
Wenn wir aus irgendeinem Grund feststellen, dass der letzte Commit Fehler enthält, können wir den Commit löschen und das Repository auf seinen vorherigen Zustand zurücksetzen.
In unserem Fall sollte der fehlerhafte Commit ba4c699
(Update Name) sein. Wir führen den Befehl git rest --hard <sha1-commit-hash>
aus, um diesen Commit zu löschen.
git reset --hard 00e1a53
Ausgang:
HEAD is now at 00e1a53 Merge branch 'main' of https://github.com/Wachira11ke/Delftscopetech
Der obige Befehl bringt Ihr Repository zum angegebenen Commit zurück und löscht die Commits danach. Der Befehl löscht auch alle nicht festgeschriebenen Änderungen in Ihrem Repository.
Wenn Sie sie behalten und nach dem Löschen anwenden möchten, führen Sie die folgenden Befehle aus.
git stash
git reset --hard 00e1a53
git stash pop
Diese Kombination speichert die nicht festgeschriebenen Änderungen und wendet sie auf den neuen Arbeitsbereich an. Es können Zusammenführungsfehler auftreten, wenn Sie Änderungen an Dateien vorgenommen haben.
Entfernen Sie veröffentlichte Commits, um das Git-Repository auf einen früheren Commit zurückzusetzen
Veröffentlichte Commits sind die Änderungen, die auf das Remote-Repository angewendet werden. Wenn wir fehlerhafte Änderungen von unserem lokalen Repository in das entfernte Repository verschoben hätten, könnten wir das Repository auf seine vorherige Version zurücksetzen.
Es lohnt sich, andere Entwickler darauf hinzuweisen, nicht aus dem Repository abzurufen. Schauen wir uns ein Beispiel an.
Beispiel 2:
Wir haben bereits besprochen, wie Commits in unserem lokalen Repository entfernt werden. Angenommen, wir hätten den Commit, den wir gelöscht haben, bereits in das Remote-Repository verschoben.
Im folgenden Kontext können wir das Remote-Repository mit dem Befehl git push
zurücksetzen.
git push --force origin HEAD
Der obige Befehl überschreibt unser Remote-Repository basierend auf dem Status unseres lokalen Repositorys. Alle Änderungen, die von anderen Entwicklern vorgenommen wurden, werden verworfen.
Hier ist eine sicherere Option:
git push --force-with-lease oriin HEAD
Sie können einen Zweig mit dem folgenden Befehl angeben:
git push -f origin <sha1-commit-hash>:branch_name
Einige Remote-Repositories haben eine Voreinstellung receive.denyNonFastForwards
, die den obigen Befehl ablehnt. In einem solchen Fall müssen wir den Zweig löschen und neu erstellen.
git push origin : <branch name>
git push origin <sha1-commit-hash>:ref/heads/<branch name>
John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.
LinkedInVerwandter Artikel - Git Push
- Commit und pushen Sie eine einzelne Datei auf die Remote
- Führen Sie mit Git einen anfänglichen Push zu einem Remote-Repository durch
- git add, git commit und git push in One Command
- Git Push hängt
- Git Push zum Überschreiben von Dateien im Remote-Repository erzwingen
- Git-Push zu einem anderen Zweig mit einem anderen Namen