Git School · FluxGit

Git detached HEAD: conserva i commit

FluxGit ·

I blocchi sono casi diversi, non un unico script. Scegli il caso del tuo repository. Sostituisci branch, percorsi e VERIFIED_COMMIT prima dell’uso. I comandi di annullamento valgono solo per la propria operazione attiva; non eseguire entrambe le alternative.

Risposta breve

Detached HEAD significa che HEAD indica direttamente un commit invece di seguire un branch locale. Puoi esaminare, compilare e fare commit. Per mantenere lavoro nuovo, crea un branch al commit attuale prima di uscire. Il checkout separato non è perdita di dati; lasciare commit nuovi senza riferimento duraturo crea il rischio.

Esempio e condizioni

L’esempio usa il checkout temporaneo di una vecchia versione e due commit da conservare come correzione. È diverso da un rebase attivo o da un submodule volutamente separato. Leggi status e termina o annulla consapevolmente qualsiasi operazione attiva prima di seguire questo percorso.

Controlla prima di modificare

Nel caso separato ordinario, branch --show-current è vuoto. Status spiega il contesto e log mostra la storia attuale. Annota l’ID di HEAD. Un nome vuoto non significa assenza di branch né file non tracciati: il riferimento e l’albero di lavoro rispondono a domande diverse.

git status
git branch --show-current
git log -3 --oneline
git rev-parse HEAD

Conserva un riferimento o checkout separato

Crea rescue/detached con switch -c mentre sei sul commit desiderato. Il branch mantiene raggiungibile quella storia, senza trasformare modifiche locali in commit. Esamina e salva tali modifiche separatamente. Scegli un nome nuovo, senza sostituire un branch esistente con opzioni di forza.

git switch -c rescue/detached
git branch --show-current

Primo percorso

Verifica nome del branch, commit e patch. Continua lì o integra la correzione con merge o cherry-pick: quest’ultimo copia la modifica in un nuovo commit, mentre merge unisce storie. Scegli in base al lavoro e controlla l’esito. Uscire da detached HEAD non richiede automaticamente un push.

git log -3 --oneline --decorate
git show --stat HEAD

Scegli consapevolmente l’altro risultato

Se sei già uscito, esamina reflog locale e candidati con show. Scegli per patch e genitore e crea rescue/recovered all’ID verificato. VERIFIED_COMMIT è un segnaposto da sostituire. HEAD@{1} non è sempre il commit perso: altre operazioni possono cambiare la voce rilevante.

git reflog --date=iso
git show VERIFIED_COMMIT
git branch rescue/recovered VERIFIED_COMMIT

Limiti ed eccezioni

Reflog registra movimenti di riferimenti locali, non è un archivio remoto. Voci e oggetti irraggiungibili possono scadere o essere rimossi. Modifiche senza commit non sono state registrate come commit. Cerca una copia precedente, come backup dell’editor o stash verificato, senza promettere che reflog ricrei quei file.

Conflitti e pulizia

Un submodule usa spesso detached HEAD per consumare il commit fissato dal padre. È normale per una dipendenza. Per sviluppare nel repository figlio, crea un suo branch al suo interno e segui il relativo processo. Il branch del padre non nomina automaticamente commit del figlio: riferimenti e storie sono separati.

Verifica il risultato

Prima di cancellare il recupero, verifica che un altro branch duraturo o merge controllato raggiunga i commit voluti. Controlla stato e patch a destinazione e conserva il riferimento durante la revisione. Un nome di branch preserva storia confermata, non una seconda copia fisica di tutti i file né test superati.

git log --oneline --decorate rescue/detached
git status --short

Domande frequenti

È un errore? Non quando ispezioni deliberatamente commit, tag o submodule fissato. Posso fare commit? Sì, ma dai un nome alla storia prima di uscire. Recuperare dopo? A volte, se oggetti ed evidenza locale esistono ancora; controlla i candidati senza garantire conservazione permanente.

Esamina l’operazione in FluxGit

Usa la storia visiva e la vista delle modifiche di FluxGit per esaminare l’operazione e i commit pertinenti. Mantieni le verifiche di branch, condivisione e file locali dell’esempio. La pagina di download mostra build e piattaforme disponibili.

Riferimenti ufficiali Git

Percorsi correlati

Scarica FluxGit