Recuperare un branch Git eliminato
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
Eliminare un branch rimuove il riferimento, non necessariamente i commit. Trova l’ultimo commit conservato e crea un branch che gli dia un nome.
Esempio e condizioni
Servono il commit corretto e i suoi oggetti disponibili. Il messaggio di eliminazione può mostrarne lo SHA: conservalo e verificalo prima di agire.
Controlla prima di modificare
Leggi il reflog di HEAD e la cronologia candidata. Il reflog del branch viene eliminato insieme al branch; quello di HEAD può conservare movimenti utili.
git reflog --date=iso
git show VERIFIED_COMMIT
git log -5 --oneline VERIFIED_COMMITConserva un riferimento o checkout separato
Usa git branch rescue/deleted-branch VERIFIED_COMMIT per nominare il commit senza cambiare branch. Non occorre sovrascrivere la directory di lavoro.
git branch rescue/deleted-branch VERIFIED_COMMITPrimo percorso
Con git show e git log verifica la punta e la cronologia desiderate. Poi ricrea il nome originale, se libero.
Scegli consapevolmente l’altro risultato
Se esisteva un branch remoto, verifica che il riferimento esista ancora prima di recuperarlo e ricreare il branch locale. Un push passato non ne garantisce la conservazione.
Limiti ed eccezioni
Un clone nuovo non contiene il tuo reflog locale. Scadenza del reflog e potatura degli oggetti sono politiche separate; evita pulizie aggressive durante il recupero.
git ls-remote --heads origin my-branchConflitti e pulizia
Senza un riferimento, git fsck --full --no-reflogs --unreachable può trovare commit conservati. Esamina ogni candidato: il comando non sa quale branch volevi.
git fsck --full --no-reflogs --unreachableVerifica il risultato
Controlla cronologia e stato del branch ricreato. Recuperare commit non ripristina modifiche ai file mai salvate in un commit.
git log -5 --oneline rescue/deleted-branch
git status --shortDomande frequenti
Il nome perduto non è un backup. Se manca l’oggetto, cerca un’altra copia, un collaboratore o un riferimento remoto realmente disponibile.
Esamina l’operazione in FluxGit
FluxGit può proteggere l’eliminazione dall’app. Ref journal attivo registra i riferimenti quando viene eseguito l’hook installato; bypass e altre implementazioni Git non sono coperti.
Riferimenti ufficiali Git
Recuperare un branch Git eliminato con reflog
Recupera un branch locale eliminato di recente trovando il suo commit conservato e creando un nuovo branch. Scopri reflog e la Safety Timeline di FluxGit in un repository di prova e quando l’hook installato del Ref journal può registrare le modifiche ai riferimenti dalla riga di comando Git.
Guarda su YouTube — si apre una nuova scheda
Registrato in un repository di prova. Voce in inglese e sottotitoli in italiano. Il recupero richiede oggetti commit conservati e voci disponibili nel reflog o nel diario; il Ref journal non salva file senza commit.
Leggi la trascrizione della narrazione
- Hai eliminato un branch con del lavoro: git branch -D, due commit che non erano mai stati uniti altrove. Ecco come recuperarli.
- In FluxGit, il branch è scomparso dall’elenco.
- Ecco perché il lavoro non è perso. Un branch è un’etichetta. git branch -D rimuove l’etichetta, ma i due commit restano nel repository, senza un branch che punti a essi. Il reflog li ricorda ancora. Crea un branch sull’ultimo commit e tornano entrambi.
- Apri la Safety Timeline. Mostra il reflog con frasi semplici.
- Find a lost commit: digita parte del messaggio. Un risultato: l’ultimo commit del branch eliminato.
- Create branch here. Un branch di recupero punta a quel commit e nient’altro si sposta.
- Entrambi i commit sono tornati nel grafo.
- Attiva il Ref journal per questo repository.
- Quando viene eseguito l’hook Git installato, FluxGit può registrare le eliminazioni di branch effettuate dalla riga di comando Git, inclusi i comandi del terminale o degli agenti.
- I casi che aggirano l’hook e le altre implementazioni di Git non sono coperti.
- Registra riferimenti, non file senza commit.
- Il recupero richiede comunque che gli oggetti commit esistano.
- Nel terminale: git reflog, trova il commit, poi esegui git branch con il vecchio nome e quel commit.
- Riepilogo. Un branch eliminato è un’etichetta persa; il reflog trova ancora i commit. Prossima lezione: quando un agente IA elimina il tuo codice.