Git Reflog und Verlauf wiederherstellen
Beherrschen Sie `git reflog`, um verlorene Commits oder Branches wiederherzustellen und so ein Sicherheitsnetz für Ihre Arbeit zu schaffen.
Git Reflog und Verlauf wiederherstellen ist eine kostenlose DevOps Bootcamp-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des DevOps Bootcamp-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der DevOps Bootcamp-Kurs umfasst insgesamt 4 Lektionen.
Was ist Git Reflog?
Haben Sie versehentlich einen Branch gelöscht oder auf den falschen Commit zurückgesetzt? Keine Panik! Git verfügt über ein leistungsstarkes Sicherheitsnetz namens Reflog.
Das Reflog (Referenzprotokoll) zeichnet auf, wo sich HEAD und die Branch-Zeiger in Ihrem lokalen Repository befunden haben.
So verfolgt Reflog den Verlauf
Im Gegensatz zum Commit-Verlauf (git log), der Änderungen an den Dateien Ihres Projekts verfolgt, zeichnet das Reflog Änderungen an den Referenzen Ihres Repositorys auf.
Jedes Mal, wenn sich Ihr HEAD (Ihr aktueller Commit) oder ein Branch-Zeiger verschiebt, zeichnet Git dieses Ereignis im Reflog auf. Dazu gehören:
- Änderungen committen
- Branches wechseln
- Mergen oder Rebasing
- Ein Reset durchführen
- Ein Repository klonen
Ihr Reflog anzeigen
Um Ihr Reflog anzuzeigen, verwenden Sie einfach den Befehl git reflog. Er zeigt eine Liste der Aktionen und den damaligen Zustand Ihres HEAD.
Simulieren wir einige Aktionen und sehen uns anschließend das Reflog an:
git init my_repo
cd my_repo
echo "First line" > file.txt
git add file.txt
git commit -m "Initial commit"
echo "Second line" >> file.txt
git add file.txt
git commit -m "Add second line"
git reflogReflog-Einträge entschlüsseln
Jeder Reflog-Eintrag hat ein bestimmtes Format. Sehen wir uns einen typischen Eintrag an:
a1b2c3d HEAD@{0}: commit: Add new feature
a1b2c3d: Der SHA-1-Hash des Commits, auf dem sichHEADzu diesem Zeitpunkt befand.HEAD@{0}: Dies ist der „Reflog-Eintragszeiger“.@{0}bezeichnet den aktuellsten Zustand,@{1}den davorliegenden und so weiter.commit: Add new feature: Eine Beschreibung der Aktion, durch die sichHEADverschoben hat.
Diese Zeiger sind für die Wiederherstellung entscheidend!
Szenario: Einen verlorenen Commit wiederherstellen
Stellen Sie sich vor, Sie haben einen Commit erstellt und ihn dann versehentlich mit git reset --soft HEAD~1 rückgängig gemacht. Ihr Commit ist nicht mehr im Verlauf Ihres aktuellen Branches enthalten, aber nicht wirklich verschwunden!
Das Reflog erinnert sich an ihn. Simulieren wir diesen häufigen Fehler:
git init my_project_recovery
cd my_project_recovery
echo "Initial content" > start.txt
git add start.txt
git commit -m "Initial commit"
echo "Important feature" > feature.txt
git add feature.txt
git commit -m "Added an important feature"
# Oops! Accidentally reset
git reset --soft HEAD~1
git reflogDen Commit zurückholen
Wenn Sie nach dem Reset git reflog ausführen, sehen Sie einen Eintrag für Ihren Commit „Added an important feature“, möglicherweise als HEAD@{1} oder ähnlich.
Um ihn wiederherzustellen, können Sie git reset mit dem Reflog-Eintrag verwenden. Wenn der Hash des verlorenen Commits beispielsweise abcdefg oder sein Reflog-Eintrag HEAD@{1} war:
# Assuming the lost commit was HEAD@{1} in the reflog
git reset --hard HEAD@{1}
# Or using the specific commit hash from reflog
# git reset --hard abcdefg
# Now, check your log. The commit is back!
git log --onelineSzenario: Einen gelöschten Branch wiederherstellen
Was ist, wenn Sie versehentlich einen gesamten Branch gelöscht haben, bevor Sie ihn mergen konnten, oder dachten, dass Sie ihn nicht mehr benötigen?
Branches sind lediglich Zeiger auf Commits. Wenn Sie einen Branch löschen, werden die Commits, auf die er verwiesen hat, nicht sofort aus Ihrem Repository entfernt. Das Reflog weiß noch, wo sich der HEAD dieses Branches befand!
Einen Branch aus dem Reflog wiederherstellen
Nehmen wir an, Sie hatten einen Branch namens feature-x, haben daran gearbeitet und ihn anschließend mit git branch -D feature-x gelöscht.
Wenn Sie git reflog ausführen, sehen Sie möglicherweise einen Eintrag wie diesen:
1234567 HEAD@{5}: branch: Created branch feature-x oderabcdefg HEAD@{2}: checkout: moving from feature-x to master
Sie können den Commit-Hash (z. B. 1234567 oder abcdefg) aus dem Reflog-Eintrag, in dem der Branch aktiv war, verwenden, um ihn neu zu erstellen:
# Assume 'feature-x' was deleted and its last commit was '1234567'
# Create a new branch pointing to that commit
git branch feature-x-recovered 1234567
# Now, check out your recovered branch
git checkout feature-x-recovered
# Verify its history
git log --onelineReflog-Einträge laufen ab
Obwohl das Reflog ein leistungsstarkes Sicherheitsnetz ist, bleiben seine Einträge nicht für immer erhalten. Git entfernt alte Reflog-Einträge nach einem bestimmten Zeitraum.
- Standardmäßig laufen erreichbare Einträge (von Ihrem aktuellen
HEADaus) nach 90 Tagen ab. - Nicht erreichbare Einträge (z. B. von gelöschten Branches oder nicht mehr referenzierten Commits) laufen nach 30 Tagen ab.
Das bedeutet: Stellen Sie „verlorene“ Arbeit möglichst bald wieder her!
Reflog-Herausforderung zur Wiederherstellung
Sie haben einen neuen Feature-Branch erstellt, mehrere Commits vorgenommen und ihn anschließend versehentlich ohne Merge gelöscht. Sie führen git reflog aus und sehen diesen Eintrag:
...
c0ffee1 HEAD@{3}: commit: Implement new user profile page
bada55e HEAD@{4}: checkout: moving from feature/profile to main
...Welche Befehlsfolge würde Ihren feature/profile-Branch korrekt neu erstellen, sodass er auf den letzten Commit zeigt, den er vor dem Löschen enthielt?
Reflog: Ihr Git-Sicherheitsnetz
Sie beherrschen nun git reflog, ein wichtiges Werkzeug zur Wiederherstellung „verlorener“ Arbeit in Ihrem lokalen Git-Repository. Denken Sie daran:
- Es verfolgt, wo sich
HEADund die Branch-Zeiger befunden haben. - Mit
git reflogkönnen Sie diesen Verlauf anzeigen. - Sie können Commits oder Branches mit
git resetodergit branchund Reflog-Einträgen (HEAD@{n}oder Commit-Hashes) wiederherstellen. - Reflog-Einträge laufen ab. Handeln Sie daher schnell, wenn Sie etwas wiederherstellen müssen!
Halten Sie Ihren Git-Verlauf sauber, aber denken Sie daran, dass das Reflog in Notfällen zur Verfügung steht!
Häufig gestellte Fragen
Ist die Lektion „Git Reflog und Verlauf wiederherstellen“ kostenlos?
Ja — der vollständige Text von „Git Reflog und Verlauf wiederherstellen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des DevOps Bootcamp-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der DevOps Bootcamp-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Git Reflog und Verlauf wiederherstellen“?
Beherrschen Sie `git reflog`, um verlorene Commits oder Branches wiederherzustellen und so ein Sicherheitsnetz für Ihre Arbeit zu schaffen. Du übst DevOps Bootcamp mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um DevOps Bootcamp zu starten?
Keine Vorkenntnisse erforderlich. DevOps Bootcamp auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.
Wie lange dauert die Lektion „Git Reflog und Verlauf wiederherstellen“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser DevOps Bootcamp-Lektion Code schreiben und ausführen?
Ja. Jede DevOps Bootcamp-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Git Reflog und Verlauf wiederherstellen
- Git Bisect zum Debuggen
- Repository-Wartung und Aufräumen
- Historie mit git filter-repo umschreiben