Mono
Lista d'attesa

Come annullare le modifiche di un agente di programmazione IA

Annulla in sicurezza le modifiche di un agente di programmazione IA: ripristina un file, scarta ciò che ha lasciato senza commit o annulla il suo commit, senza perdere il tuo lavoro.

Per annullare le modifiche di un agente di programmazione IA, controlla cosa è cambiato, poi usa il comando Git adatto: git restore per i file modificati, git clean per i file nuovi e git revert per un commit. Prima salva una copia di sicurezza con git stash. Anche il comando /rewind di Claude Code può ripristinare il codice, ma non tiene traccia di ogni modifica.

Questa guida parte dal momento in cui hai già deciso di scartare il lavoro; per decidere, leggi come rivedere le modifiche al codice dell’IA. Mono mostra cosa è cambiato ma non lo annulla, quindi anche lì i comandi sono gli stessi.

1. Ferma l’agente e guarda cosa è cambiato

Prima di tutto, ferma l’agente. In Mono, mentre l’agente lavora, il pulsante di invio diventa un pulsante per annullare. In un terminale nella cartella del progetto, esegui:

text
git status
git log --oneline -5

Il primo comando elenca i file modificati, eliminati, aggiunti all’indice e nuovi. Il secondo mostra i commit recenti, compresi quelli fatti dall’agente. Annota quali modifiche sono tue: i comandi per annullare non sanno chi ha scritto una riga.

Cosa vedi Come annullarlo
File modificato o eliminato, non aggiunto all’indice git restore <path>
Modifica aggiunta all’indice git restore --staged <path>, poi annulla la modifica al file
File nuovo, non tracciato git clean -n <path>, poi git clean -f <path>
Un commit che non volevi git revert <commit>

In Mono, «Mostra le modifiche» elenca i file modificati e nuovi dall’ultimo commit, quindi non mostra un commit fatto dall’agente.

2. Prima salva una copia di sicurezza

I comandi restore e clean scartano per sempre il lavoro non ancora salvato in un commit, quindi prima salva tutto:

text
git stash push --include-untracked -m "before undo"
git stash apply --index

Il primo comando salva i file modificati e nuovi e pulisce l’albero di lavoro; il secondo li rimette al loro posto, mantenendo ciò che era nell’indice. Non sembra cambiato nulla, ma ora git stash list contiene una copia chiamata «before undo».

Se annulli troppo, git restore --source "stash@{0}" <path> recupera un file modificato dallo stash più recente.

3. Annulla un file o una sua parte

Scegli il comando più mirato:

  • git restore <path> scarta le modifiche di quel file non aggiunte all’indice.
  • git restore --staged <path> toglie una modifica dall’indice ma la lascia nel file.
  • git restore -p <path> chiede conferma separatamente per ogni parte modificata (hunk), ed è utile quando tu e l’agente avete modificato lo stesso file.
  • git clean -n <path> elenca i file non tracciati che git clean -f <path> rimuoverebbe. Indica sempre un percorso.

La documentazione di git restore spiega ogni opzione.

4. Annulla tutto ciò che l’agente ha lasciato senza commit

Se nessuna delle modifiche è tua, scartale tutte dalla radice del progetto con git restore --staged --worktree ., poi usa git clean -n . e git clean -f . per i file nuovi. Altrimenti, procedi un percorso alla volta.

Ecco un esempio inventato: hai chiesto a un agente di rinominare la classe CSS .btn-primary in .button-main nel progetto «tidy-recipes». In precedenza aveva già fatto il commit di un aggiornamento del lockfile che nessuno aveva chiesto. Questa volta ha cambiato la classe in 3 file, ha riformattato 12 file che non c’entravano e ha creato styles/tokens.css. Nel frattempo tu hai modificato a mano README.md, e vuoi tenere quella modifica.

Dopo la copia di sicurezza, ripristina i file dell’agente (qui src/ e styles/main.css) e rimuovi il suo file nuovo:

text
git restore src/ styles/main.css
git clean -n styles/tokens.css
git clean -f styles/tokens.css

Qui non usare git restore .: scarterebbe anche la tua modifica al README. Se avessi modifiche tue dentro src/, indica i file dell’agente uno per uno.

Ora git status elenca solo README.md, e git diff mostra solo le tue righe. Il commit del lockfile è ancora lì.

5. Annulla un commit già fatto dall’agente

git revert registra un nuovo commit che inverte uno precedente. La documentazione di git revert dice che serve un albero di lavoro pulito, quindi prima metti da parte la modifica al README:

text
git stash push -m "readme" README.md
git revert <lockfile commit>
git stash pop

Usa l’hash che trovi in git log e aggiungi --no-edit per saltare l’editor del messaggio. git stash pop recupera «readme» e lascia «before undo» nell’elenco. Ora git status elenca solo README.md, e git log --oneline mostra in cima Revert "Update lockfile".

Per un commit già inviato con push, preferisci revert a git reset, che riscrive una cronologia che altri potrebbero già avere. Se dopo un reset o un rebase un commit sembra perso, git reflog elenca i commit su cui sei stato di recente, con i loro hash.

6. Usa i checkpoint dell’agente, con Git come rete di sicurezza

Claude Code salva un checkpoint prima di ogni prompt: esegui /rewind, oppure premi due volte Esc con il prompt vuoto, per ripristinare il codice, la conversazione o entrambi. La sua documentazione sui checkpoint ne elenca i limiti: le modifiche fatte con comandi shell non vengono tracciate, le modifiche esterne di solito non vengono registrate e i checkpoint non sostituiscono il controllo di versione. La disponibilità dipende anche dall’app in cui esegui l’agente.

Quindi tieni Git come soluzione di riserva:

  • Fai un commit o crea un branch prima di ogni compito, così «l’ultimo commit» significa «prima dell’agente».
  • Di’ all’agente di non fare commit senza chiedere, per esempio nel tuo file AGENTS.md.
  • Tieni attive le approvazioni. La Modalità YOLO di Mono, che accetta ogni richiesta dell’agente, è disattivata per impostazione predefinita. Vedi cosa controllare prima di consentire.

In Mono, la scheda di un progetto apre un terminale nella cartella del progetto sul tuo computer, anche dal telefono (vedi la guida alla programmazione remota). Mono non è ancora disponibile, ma puoi iscriverti alla lista d’attesa.

Scritto da

Reunified crea app che riuniscono ciò che è sparso.

Continua a leggere

Tutti gli articoli

In arrivo

Iscriviti alla lista d'attesa

Lasciaci la tua email e ti scriveremo quando Mono sarà pronto da scaricare.

Dove userai Mono?