Git School · FluxGit

Recuperare un branch Git eliminato

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

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_COMMIT

Conserva 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_COMMIT

Primo 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-branch

Conflitti 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 --unreachable

Verifica 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 --short

Domande 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

Git School · 1:51

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.

Recuperare un branch Git eliminato con reflog
Voce narrante in inglese. Su YouTube sono disponibili sottotitoli manuali in 11 lingue. Questa trascrizione è in italiano.

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
  1. 00:03 Hai eliminato un branch con del lavoro: git branch -D, due commit che non erano mai stati uniti altrove. Ecco come recuperarli.
  2. 00:13 In FluxGit, il branch è scomparso dall’elenco.
  3. 00:17 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.
  4. 00:36 Apri la Safety Timeline. Mostra il reflog con frasi semplici.
  5. 00:44 Find a lost commit: digita parte del messaggio. Un risultato: l’ultimo commit del branch eliminato.
  6. 00:52 Create branch here. Un branch di recupero punta a quel commit e nient’altro si sposta.
  7. 00:58 Entrambi i commit sono tornati nel grafo.
  8. 01:02 Attiva il Ref journal per questo repository.
  9. 01:06 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.
  10. 01:15 I casi che aggirano l’hook e le altre implementazioni di Git non sono coperti.
  11. 01:19 Registra riferimenti, non file senza commit.
  12. 01:23 Il recupero richiede comunque che gli oggetti commit esistano.
  13. 01:28 Nel terminale: git reflog, trova il commit, poi esegui git branch con il vecchio nome e quel commit.
  14. 01:36 Riepilogo. Un branch eliminato è un’etichetta persa; il reflog trova ancora i commit. Prossima lezione: quando un agente IA elimina il tuo codice.

Percorsi correlati

Scarica FluxGit