Git School · FluxGit

Commit sul branch sbagliato: spostarlo con Git

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

Se hai fatto commit sul branch sbagliato, conserva prima un riferimento in un branch di recupero. Applica la modifica al branch corretto con cherry-pick e controllala. Solo dopo correggi l’origine: reset può essere adatto a una punta privata; su un branch condiviso normalmente serve revert. Sono due decisioni distinte.

Esempio e condizioni

L’esempio parte da un commit normale, non un merge, alla punta di main, destinato al branch feature/fix già esistente. L’albero di lavoro è pulito. Sostituisci i nomi con i tuoi. Con più commit, un merge o lavoro successivo, identifica l’intervallo preciso prima di usare il reset dell’esempio.

Controlla prima di modificare

Leggi stato, branch attuale e grafo recente. Controlla file e patch, non solo il titolo: un commit può mescolare più attività. Salva l’ID completo in SCHOOL_MISTAKE per riconoscerlo dopo il cambio di branch. Verifica se altri hanno ricevuto quella storia prima di correggere main.

git status --short
git branch --show-current
git log -5 --oneline --decorate
git show --stat HEAD
SCHOOL_MISTAKE=$(git rev-parse HEAD)

Conserva un riferimento o checkout separato

Il branch di recupero mantiene raggiungibile l’oggetto del commit, ma non copia modifiche senza commit. Salvale e verificale separatamente con un commit deliberato, uno stash controllato o una copia esterna. Stash con -u include file non tracciati, non quelli ignorati. Reflog non conserva automaticamente quei contenuti non confermati.

git branch rescue/wrong-branch "$SCHOOL_MISTAKE"
git show --stat rescue/wrong-branch

Primo percorso

Passa al branch di destinazione e fai cherry-pick dell’ID salvato. Git applica il cambiamento e normalmente crea un commit con ID diverso perché cambia il genitore. Controlla patch e verifiche del progetto. Non togliere l’originale prima di confermare il risultato nel destinatario e conservare il recupero.

git switch feature/fix
git cherry-pick "$SCHOOL_MISTAKE"
git show --stat HEAD

Scegli consapevolmente l’altro risultato

Solo per una punta privata, torna su main e verifica che HEAD sia ancora SCHOOL_MISTAKE. Con albero pulito e riferimento conservato, reset al genitore rimuove quel commit da main. Il reset duro sostituisce anche i file tracciati. Se main è avanzato o il commit è condiviso, questa sequenza non è più adatta.

git switch main
git status --short
git rev-parse HEAD
git reset --hard "${SCHOOL_MISTAKE}^"

Limiti ed eccezioni

Su un branch condiviso preferisci revert normale: aggiunge un commit inverso senza eliminare storia già ricevuta. Cherry-pick a destinazione e revert all’origine richiedono verifiche separate. Coordina eventuali integrazioni successive; questa guida non autorizza un force push automatico.

git switch main
git revert "$SCHOOL_MISTAKE"

Conflitti e pulizia

Cherry-pick può fermarsi per conflitti. Leggi status, risolvi e prepara i file corretti, poi continua; usa cherry-pick --abort se hai scelto male modifica o destinazione. Revert ha comandi propri per continuare e annullare. Annullare un’operazione attiva non è un backup generale delle modifiche fatte fuori da essa.

git status
git cherry-pick --abort
git revert --abort

Verifica il risultato

Il grafo finale deve mostrare la modifica su feature/fix e la correzione scelta su main. Confronta i patch e ogni checkout. Mantieni rescue/wrong-branch fino alla revisione completata. Uno stato pulito non prova che l’applicazione funzioni ancora: verifica anche il comportamento interessato.

git log -6 --oneline --decorate --all
git show --stat feature/fix
git status --short

Domande frequenti

Più commit? Controlla ordine, dipendenze e intervallo. Reset --soft? Sposta il riferimento mantenendo indice e file, ma da solo non trasferisce un commit tra branch. Già pubblicato? Parti dal revert per storia condivisa e concorda esplicitamente un’eventuale riscrittura eccezionale.

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