Striking Redskins Nero Pelle Giacca 8043245m Commander Uomo In qFnXw8
Giacca Div da Vest uomo Gr 16256 Wb Multisport Maloja col Condorm Windblock 5cHBWpTyfn
Medium Scott Lyle Green And Jumper qEvq45zw 1st Edition Liv misure Honey Down Tutte Klattermusen Giacca le Raven unisex AxdwBBz7q

Annullare qualcosa

In qualsiasi momento puoi voler annullare qualcosa. Rivedremo alcuni strumenti basilari per annullare le modifiche fatte. Attenzione però, perché non sempre puoi ripristinare ciò che annulli. Questa è una delle aree di Git dove puoi perdere del lavoro svolto se commetti un errore.

Modifica la tua ultima commit

Uno degli annullamenti più comuni si verifica quando committi qualcosa troppo presto e magari dimentichi di aggiungere qualche file, o sbagli qualcosa nel messaggio di commit. Se vuoi modificare questa commit puoi eseguire il comando commit con l'opzione --amend:

$ git commit --amend

Questo comando usa la tua area di stage per la commit. Se non hai fatto modifiche dalla tua ultima commit (per esempio, esegui questo comando subito dopo la tua commit precedente), allora il tuo snapshot sarà identico e potrai cambiare il tuo messaggio di commit.

Verrà lanciata la stessa applicazione per scrivere il messaggio della commit, ma conterrà già il messaggio della commit precedente. Puoi modificare il messaggio normalmente, ma questo sovrascriverà la commit precedente.

Per esempio, se fai una commit e realizzi di non aver messo nello stage le modifiche a un file e vuoi aggiungerlo a questa commit, puoi fare così:

$ git commit -m 'initial commit'
$ git add forgotten_file
$ git commit --amend
Kappa Felpato Cotone Arit Giacchetto Banda 3031rx0908 Nero Uomo Slim

Dopo questi tre comandi ti ritroverai con una sola commit: la seconda sovrascrive la prima.

Rimuovere un file dall'area di stage

Le prossime due sezioni mostrano come gestire le modifiche della tua area di stage e della directory di lavoro. La parte divertente è che il comando che usi per determinare lo stato di queste due aree ti ricorda come annullare le modifiche alle stesse. Per esempio, supponiamo che hai modificato due file e vuoi committarli come modifiche separate, ma accidentalmente digiti git add * e li metti entrambi in stage. Come puoi rimuoverne uno? Il comando git status ti ricorda:

$ git add .
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   README.txt
        modified:   benchmarks.rb

Il testo sotto “Changes to be committed” ti dice di usare git reset HEAD <file>... per rimuovere dallo stage. Usa quindi questo consiglio per rimuoever benchmarks.rb:

$ git reset HEAD benchmarks.rb
Unstaged changes after reset:
M       benchmarks.rb
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   README.txt

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   benchmarks.rb
Banda Felpato Slim Giacchetto Cotone Arit Kappa Nero Uomo 3031rx0908

Il comando è un po' strano, ma funziona. Il file benchmarks.rb ora è modificato ma non più nello stage.

Annullare le modifiche a un file

Come fare se ti rendi conto che non vuoi più mantenere le modifiche di benchmarks.rb? Come puoi annullarle facilmente — ritornare a come era prima dell'ultima commit (o al clone iniziale, o comunque lo avevi nella tua directory di lavoro)? Fortunatamente git status ti dice come farlo. Nell'ultimo output di esempio, l'area dei file modificati appare così:

Perry Ristampe J1170 Cacciatrice 102 Harrington Fred Jacket 5Zqxdw1Z0
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   benchmarks.rb

Ti dice abbastanza chiaramente come annullare le tue modifiche (almeno le nuove versioni di Git, dalla 1.6.1 in poi, lo fanno: se hai una versione più vecchia ti raccomandiamo di aggiornarla per avere alcune di queste funzioni utili e carine). Vediamo cosa dice:

$ git checkout -- benchmarks.rb
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   README.txt

Puoi vedere come le modifiche siano state annullate. Dovresti capire quanto questo sia un comando pericoloso: tutte le modifiche fatte al file sono sparite: lo hai praticamente sovrascritto con un altro file. Non usare mai questo comando a meno che non sia assolutamente certo di non volere il file. Se hai solo bisogno di toglierlo di torno, vedremo i ripostigli (stash) e le diramazioni (branchGiacca da softshell l'outdoor Creek Nuovo Softshell Rock Giacca Softshell impermeabile per H 127 uomo 08wqq5z) nei prossimi capitoli, che generalmente sono le strade migliori da seguire.

Ricorda: qualsiasi cosa che sia stata committata in Git può quasi sempre essere recuperata. Tutte le commit che erano sulle diramazioni che sono state cancellate o sovrascritte con una commit --amend possono essere recuperate (vedi il Capitolo 9 per il recupero dei dati). Ma qualsiasi cosa che perdi che non sia stata mai committata non la vedrai mai più.

prev | next