Git detached HEAD: Commits behalten
Die Blöcke sind verschiedene Fälle, kein Gesamtskript. Wähle den passenden Fall. Branchnamen, Pfade und VERIFIED_COMMIT vor Nutzung ersetzen. Abbruchbefehle gelten nur für ihre laufende Operation; nicht beide Alternativen ausführen.
Kurzantwort
Detached HEAD bedeutet: HEAD zeigt direkt auf einen Commit, statt einem lokalen Branch zu folgen. Du kannst prüfen, bauen und committen. Benenne neue Arbeit vor dem Verlassen mit einem Branch am aktuellen Commit. Der getrennte Checkout ist kein Datenverlust; neue Commits ohne dauerhafte Referenz erzeugen das Risiko.
Beispiel und Voraussetzungen
Das Beispiel ist ein vorübergehender Checkout einer älteren Version mit zwei neuen Commits für einen Fixbranch. Das unterscheidet sich von aktivem Rebase oder absichtlich getrenntem Submodule-Checkout. Status lesen und laufende Operationen bewusst beenden oder abbrechen, bevor du diese Anleitung verwendest.
Vor Änderungen prüfen
Im normalen getrennten Zustand bleibt branch --show-current leer. Status erklärt den Zustand, log zeigt den aktuellen Verlauf. Notiere die ID von HEAD. Ein leerer Branchname bedeutet weder fehlende Branches noch unversionierte Dateien: Referenz und Arbeitsverzeichnis beantworten verschiedene Fragen.
git status
git branch --show-current
git log -3 --oneline
git rev-parse HEADReferenz oder getrennten Checkout behalten
Erstelle rescue/detached per switch -c, solange du am gewünschten Commit bist. Der Branch hält diesen Verlauf erreichbar; lokale Änderungen werden dadurch nicht committet. Diese separat prüfen und sichern. Nutze einen neuen Namen und ersetze keinen bestehenden Branch mit einer Force-Option.
git switch -c rescue/detached
git branch --show-currentErster Ablauf
Prüfe Branchname, Commits und Patch. Arbeite dort weiter oder integriere den Fix mit merge beziehungsweise cherry-pick. Cherry-pick kopiert eine Änderung in einen neuen Commit; merge verbindet Verläufe. Nach Ziel entscheiden und Ergebnis prüfen. Ein Push ist zum sicheren Verlassen nicht automatisch nötig.
git log -3 --oneline --decorate
git show --stat HEADAnderes Ergebnis bewusst wählen
Bist du bereits weggewechselt, prüfe das lokale reflog und Kandidaten mit show. Wähle anhand Patch und Elterncommit und erstelle rescue/recovered an der verifizierten ID. VERIFIED_COMMIT ist zu ersetzen. HEAD@{1} ist nicht immer der verlorene Commit: Spätere Vorgänge ändern den relevanten Eintrag.
git reflog --date=iso
git show VERIFIED_COMMIT
git branch rescue/recovered VERIFIED_COMMITGrenzen und Ausnahmen
Reflog protokolliert lokale Referenzbewegungen, ist kein Remote-Archiv. Einträge und unerreichbare Objekte können ablaufen oder entfernt werden. Uncommittete Änderungen wurden dort nie als Commits gespeichert. Suche nach einer vorherigen Kopie wie Editorbackup oder geprüftem Stash; reflog kann solche Inhalte nicht allgemein rekonstruieren.
Konflikte und Aufräumen
Submodule verwenden oft detached HEAD für den vom Elternrepository fixierten Commit. Das ist normal beim Nutzen einer Abhängigkeit. Für Entwicklung im Kindrepository dort einen eigenen Branch erstellen und dessen Beitragsprozess verwenden. Ein Branch im Elternrepository benennt keine Kindcommits automatisch; Referenzen und Verläufe sind getrennt.
Ergebnis prüfen
Vor dem Löschen des Rettungsbranches prüfen, ob ein dauerhafter Branch oder geprüfter Merge die gewünschten Commits weiterhin erreicht. Status und Zielpatch kontrollieren, Referenz während der Prüfung behalten. Ein Branchname hält committeten Verlauf, ist keine zweite physische Kopie aller Dateien und kein Nachweis bestandener Tests.
git log --oneline --decorate rescue/detached
git status --shortHäufige Fragen
Ist es ein Fehler? Nicht beim bewussten Prüfen eines Commits, Tags oder fixierten Submodules. Darf ich committen? Ja, aber den Verlauf vor dem Verlassen benennen. Später retten? Manchmal, solange Objekte und lokale Belege vorhanden sind; keine permanente Aufbewahrung versprechen.
Operation in FluxGit prüfen
Prüfe die Operation und die betreffenden Commits mit FluxGits visuellem Verlauf und Patchansicht. Behalte die Prüfungen für Branch, geteilten Verlauf und lokale Dateien aus diesem Beispiel bei. Die Downloadseite zeigt die aktuell verfügbaren Builds und Plattformen.