Zum Inhalt springen
GitTree
Git-Anleitungen4 Min. gelesen

Git-Reset erklärt: weich, gemischt und hart

git reset verschiebt Ihren Zweig in einen anderen Commit. Die drei Modi unterscheiden sich nur darin, was sie mit Ihren Dateien tun. Hier erfahren Sie, was jeder behält, was Sie verwenden können und wie Sie ihn wiederherstellen, wenn Sie zu weit zurückgesetzt haben.

Geschrieben von Kodmora

Das Softwarehaus hinter GitTree

Aktualisiert
  • Rückgängigmachen und Wiederherstellen
  • Commit-Verlauf
  • Commits
Auf dieser Seite

Alle drei Modi verschieben den aktuellen Zweig in den von Ihnen benannten Commit. `--soft` sorgt dafür, dass jede Änderung bereitgestellt wird, `--mixed` (Standardeinstellung) behält sie ohne Bereitstellung in Ihrem Arbeitsordner und `--hard` verwirft sie. Um Ihren letzten Commit rückgängig zu machen, aber die Arbeit beizubehalten, führen Sie git reset --soft HEAD~1 aus. Verwenden Sie --hard nur, wenn Sie sicher sind, da dadurch nicht committete Änderungen endgültig gelöscht werden.

Was ist der Unterschied zwischen weich, gemischt und hart?

Was jeder Git-Reset-Modus ändert
ModusZweigumzügeBereitstellungsbereichArbeitsordnerBenutze es, um
--softJaBehaltenBehaltenRedo-Commits: Alles bleibt gestagt
--mixedJaZurücksetzenBehaltenHeben Sie die Bühne auf und wählen Sie erneut aus, was Sie committen möchten
--hardJaZurücksetzenZurücksetzenWerfen Sie die Arbeit weg

Git speichert drei Kopien Ihrer Arbeit: den Commit-Verlauf, den Staging-Bereich und den Arbeitsordner. Zurücksetzen verschiebt immer den ersten. Der Modus entscheidet, ob er auch die anderen beiden umschreibt.

Wann sollte ich git reset --soft verwenden?

Verwenden Sie es, um Commits rückgängig zu machen, während jede Änderung im Stadium bleibt und für eine erneute Commit bereit bleibt. Dies ist der schnellste Weg, einen Zweig in einem Commit zusammenzufassen:

# undo the last commit, keep the changes staged
git reset --soft HEAD~1

# squash everything since main into one commit
git reset --soft main
git commit -m "feat(search): quick open"

Wann sollte ich git reset --mixed verwenden?

Dies ist die Standardeinstellung, daher bedeutet git reset git reset --mixed. Verwenden Sie es, um Commits rückgängig zu machen und die Arbeit anders aufzuteilen oder um die Bereitstellung von Dateien aufzuheben:

# undo the last two commits, keep the changes unstaged
git reset HEAD~2

# unstage one file (the branch does not move)
git reset src/search.ts

Beim Aufheben der Bereitstellung übernimmt git restore --staged src/search.ts die gleiche Aufgabe und liest sich klarer.

Wann sollte ich git reset --hard verwenden?

# drop the last commit and its changes
git reset --hard HEAD~1

# match the remote exactly
git fetch origin
git reset --hard origin/main

Wie entferne ich ein Commit aus einem Branch?

Möglichkeiten zum Entfernen eines Commits
SituationBefehl
Letzter Commit, nicht gepushtgit reset --hard HEAD~1
Älterer Commit, nicht gepushtgit rebase -i <sha>~1, dann markieren Sie es als drop
Commit wurde bereits gepushtgit revert <sha>
Commit ging zum falschen Zweiggit cherry-pick es und setzen Sie dann den alten Zweig zurück

git revert hält den Verlauf intakt und ist daher die einzig sichere Wahl in einem gemeinsam genutzten Zweig. Das Zurücksetzen eines verschobenen Zweigs erfordert einen erzwungenen Push und zerstört die Klone Ihrer Teamkollegen. Interactive rebase und cherry-pick haben ihre eigenen Anleitungen.

Wie mache ich einen Git-Reset rückgängig?

Durch Zurücksetzen wurde der Zweig verschoben und das Reflog merkt sich, wo er war:

git reflog
# 3e52f10 HEAD@{0}: reset: moving to HEAD~2
# 9b3c7d1 HEAD@{1}: commit: add search box

git reset --hard 9b3c7d1

Dies bringt Commits zurück, auch nach --hard. Dateien, die bereitgestellt, aber nie committet wurden, können manchmal mit git fsck --lost-found gefunden werden. Veränderungen, die nie gestagt wurden, sind weg. Ein Zurücksetzen, Rebase oder Commit rückgängig machen deckt jeden Fall ab.

Was ist der Unterschied zwischen Zurücksetzen, Zurücksetzen und Wiederherstellen?

Drei Befehle, die gleich klingen
BefehlWas es bewirktGeschichte neu schreiben?
git resetVerschiebt den Zweig zu einem anderen CommitJa
git revertFügt einen Commit hinzu, der einen anderen rückgängig machtNein
git restoreÄndert Dateien, niemals den ZweigNein

So setzen Sie einen Zweig in GitTree zurück

  1. Wählen Sie das Commit aus

    Klicken Sie mit der rechten Maustaste auf den Commit, zu dem der Zweig zurückkehren soll, und öffnen Sie Reset … to This Commit.

  2. Wählen Sie den Modus

    Wählen Sie Sanft: Alle Änderungen bereitgestellt halten, Gemischt: Änderungen im Arbeitsordner beibehalten oder Schwer: Alle Änderungen verwerfen….

  3. Machen Sie den Vorgang bei Bedarf rückgängig

    GitTree speichert Ihre Arbeit zuerst unter refs/ogt/trash, so dass Rückgängig sie auch nach einem Hard-Reset wiederherstellen kann.

Die Soft-, Mixed- und Hard-Reset-Modi im Commit-Menü in GitTree.
Die Soft-, Mixed- und Hard-Reset-Modi im Commit-Menü in GitTree.GitTree-Schnittstelle mit einem Demonstrations-Repository.

Weitere Informationen finden Sie unter Einen Zweig auf einen Commit zurücksetzen und in der Lektion zum Zurücksetzen der Modi zum Üben an einem sicheren Repository.

Häufig gestellte Fragen

Was bedeutet HEAD~1?

Der Commit erfolgt einen Schritt vor dem aktuellen. HEAD~3 ist drei Schritte zurück. git log --oneline zeigt die Hashes an, wenn Sie einen Commit lieber direkt benennen möchten.

Löscht Git Reset Commits?

Dadurch wird der Zweig von ihnen weg verschoben, sodass sie nicht mehr in git log angezeigt werden. Sie bleiben standardmäßig mindestens 30 Tage im Reflog, dann kann Git sie entfernen.

Wie mache ich mein letztes Commit rückgängig, behalte aber die Änderungen bei?

Führen Sie git reset --soft HEAD~1 aus, um sie im Staging zu belassen, oder git reset HEAD~1, um sie nicht im Staging zu halten.

Ist git reset --hard sicher?

Es ist sicher für engagierte Arbeit, die durch das Reflog zurückgebracht werden kann. Es ist nicht sicher für nicht committete Arbeit, die gelöscht wird. Wenn Sie sich nicht sicher sind, sollten Sie es zuerst verstauen oder committen.

Kann ich einen Zweig zurücksetzen, der bereits gepusht wurde?

Nur mit einem Force-Push, der den Zweig für alle neu schreibt. Verwenden Sie bei gemeinsam genutzten Zweigen stattdessen git revert.

Quellen

Behauptungen zu anderen Produkten wurden anhand der offiziellen Seiten auf 7. November 2026 überprüft. Preise und Ausstattung ändern sich; Die Seiten der Anbieter sind die Quelle der Wahrheit.