Git School · FluxGit

Annullare l’ultimo commit Git: soft reset o revert

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

Per annullare l’ultimo commit locale conservando le modifiche, reset --soft sposta il branch al genitore lasciando indice e file invariati. Per uno condiviso, revert aggiunge un commit inverso. Decidi prima se conservare il codice e se altre persone possiedono quella storia.

Esempio e condizioni

L’esempio ha un commit normale, senza merge e con genitore, alla punta attuale, albero pulito e nessun lavoro estraneo preparato. Il primo commit non ha padre HEAD^; un merge ne ha più di uno. Non rientrano nel caso. Leggi il grafo senza trattare HEAD~1 come annullamento universale.

Controlla prima di modificare

Controlla patch, stato e condivisione. Togliere il commit continuando il codice, invertire codice pubblicato e scartare tutto sono risultati diversi. Coordina prima di riscrivere storia pubblicata. Una data recente o il tuo nome d’autore non dimostra che il commit sia privato.

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

Conserva un riferimento o checkout separato

Crea rescue/before-undo in HEAD per conservare lo stato confermato originale. Salva file senza commit separatamente: il branch non li contiene. Nel caso pulito soft reset espone solo quel patch nell’indice. Un indice già modificato può mescolare attività e richiede una revisione propria.

git branch rescue/before-undo HEAD
SCHOOL_UNDO=$(git rev-parse HEAD)

Primo percorso

Nel caso locale che conserva cambiamenti, usa reset --soft HEAD^ e controlla diff --cached. Il contenuto resta nell’indice e nell’albero per un nuovo commit. Reset mixed modifica l’indice diversamente. Non scegliere --hard solo per accorciare lo stato: cambia anche i file di lavoro.

git reset --soft HEAD^
git diff --cached
git status --short

Scegli consapevolmente l’altro risultato

Per un commit condiviso normale, salva l’ID verificato in SCHOOL_UNDO e usa revert. Il nuovo commit inverte la modifica mantenendo la storia ricevuta. Verifica risultato e progetto prima di push normale. Un merge richiede scelta del genitore principale e comprensione degli effetti futuri: usa un processo specifico.

git revert "$SCHOOL_UNDO"

Limiti ed eccezioni

Revert può confliggere con lavoro successivo. Leggi status, risolvi e prepara file, poi revert --continue. Usa revert --abort per una scelta sbagliata. Reset --soft non ha uno stato corrispondente di continuazione o annullamento. Non mescolare flussi né avviare un’altra riparazione con revert ancora attivo.

git status
git revert --abort

Conflitti e pulizia

Scartare anche codice confermato e file locali è un’altra decisione distruttiva. Conserva lo stato prima. Il lavoro senza commit non è nel reflog. Con restore points attivati e modifiche locali rilevate, FluxGit può salvare un safety stash prima di hard reset supportato; questo terminale non invoca quel percorso protetto.

Verifica il risultato

Dopo soft reset confronta punta e patch preparato con il recupero. Dopo revert verifica che l’inverso tocchi solo ciò che desideri e mantenga lavoro successivo utile. Esegui verifiche pertinenti. Mantieni il recupero durante la revisione: completare un comando senza errore non dimostra codice corretto.

git log -4 --oneline --decorate
git status --short
git diff --cached

Domande frequenti

Soft reset cancella file? Mantiene albero e indice spostando il riferimento. Revert elimina l’originale? No, aggiunge una modifica inversa. Reflog recupera tutto? No: tratta riferimenti locali conservati e oggetti confermati, non contenuti arbitrari di file non salvati.

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