Git School · FluxGit

Git amend: correggere l’ultimo 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

Commit --amend sostituisce la punta con un commit nuovo, senza modificare l’oggetto originale. Corregge messaggio o contenuto dell’ultimo commit locale dopo la revisione dell’indice. Per un commit condiviso, una correzione aggiuntiva è spesso più semplice da coordinare che una riscrittura.

Esempio e condizioni

L’esempio usa un commit locale normale con messaggio errato e modifica mancante in src/parser.js. Sono due riparazioni: solo messaggio o anche contenuto. Non è un esempio per commit precedenti, iniziale o merge. Adatta file e messaggio e parti dalla punta attuale.

Controlla prima di modificare

Leggi status, ultimo commit e diff --cached. L’indice fornisce contenuto a un amend normale: file preparati per un’altra attività possono entrare inaspettatamente. Esamina anche il non preparato. Verifica se l’originale è stato pubblicato, integrato o usato da altri prima di cambiarne l’identità.

git status --short
git log -1 --oneline
git diff --cached
git diff

Conserva un riferimento o checkout separato

Crea rescue/before-amend in HEAD per conservare l’originale e confrontarlo. Non salva tutti i file locali: conserva quelli importanti separatamente. Reflog può identificare vecchi stati ancora presenti localmente, senza garantire oggetti permanenti né copie di modifiche mai confermate.

git branch rescue/before-amend HEAD

Primo percorso

Per il solo messaggio, --amend --only senza percorsi esclude cambiamenti già preparati. -m fornisce il testo corretto. Controlla poi commit e indice: il lavoro preparato deve restare per un commit separato. Includere anche l’indice è l’altro flusso, sebbene entrambi usino --amend.

git commit --amend --only -m "Fix parser error message"
git diff --cached

Scegli consapevolmente l’altro risultato

Per il file omesso, prepara il percorso voluto, rivedi tutto il diff dell’indice e usa --amend --no-edit per conservare il messaggio. Altri file preparati entrano salvo esclusione deliberata. Esegui verifiche del progetto. Scegliere hunks precisi aiuta la revisione, senza dimostrare la correttezza del commit combinato.

git add -- src/parser.js
git diff --cached
git commit --amend --no-edit

Limiti ed eccezioni

Se la punta è condivisa, preferisci un nuovo commit correttivo. Pubblicare una punta riscritta può richiedere coordinamento ed essere vietato dalla protezione. Nessun force push generico qui. Se il team permette una riscrittura, segui il processo separato per lease, branch e verifica con collaboratori.

git add -- src/parser.js
git diff --cached
git commit -m "Correct parser handling"

Conflitti e pulizia

Amend normalmente non ha una sequenza propria di conflitti. Hook fallito o commit rifiutato richiedono controllo di messaggio e stato, non reset --hard automatico. Per contenuto errato, confronta prima rescue/before-amend. Conserva copie verificate dei file locali prima di un reset correttivo.

Verifica il risultato

Confronta messaggio e file dei due commit. ID diversi sono normali. Per solo messaggio gli alberi devono coincidere; per contenuto deve cambiare solo il patch voluto. Controlla quanto resta preparato e mantieni il recupero fino all’integrazione sicura della sostituzione revisionata.

git show --stat HEAD
git diff rescue/before-amend HEAD
git status --short

Domande frequenti

No-edit impedisce modifiche al contenuto? No, conserva il messaggio ma l’indice può cambiare contenuti. Amend modifica commit precedenti? Non direttamente; serve altro flusso. Dopo push? Solo con politica esplicita sulla storia condivisa; un commit aggiuntivo evita molta coordinazione.

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