Come software per il controllo della versione, Git rende prevedibilmente facile il rollback delle modifiche. Ma anche il concetto di annullamento di un cambiamento è più complicato di quanto si possa pensare a prima vista. Un repository Git non è esattamente la stessa cosa del set di file su cui stai lavorando localmente. Annullare le modifiche significa considerare esattamente dove si desidera annullarle.

idiotaguardare, git reset, e idiotaristabilire sono comandi che possono aiutarti a ripristinare una versione precedente non solo della tua base di codice, ma anche di singoli file. Conosci i dettagli di questi comandi e salterai la cronologia dei file come un esperto in pochissimo tempo.

Che cosa significa reimpostare un file, comunque?

È importante notare che il ripristino di un file potrebbe significare cose diverse per persone diverse in circostanze diverse. Anche il git reset Il comando potrebbe non corrispondere alle tue aspettative su cosa significhi il ripristino.

A volte, vorrai annullare le modifiche locali in modo che un file torni sincronizzato con il repository corrente. In altre occasioni, potresti voler ripristinare le modifiche che hai già eseguito il commit nel repository.

instagram viewer

I seguenti termini sono fondamentali per comprendere la differenza: albero di lavoro, area di staging e repository. I file modificati localmente appartengono all'albero di lavoro. I file che commetti alla fine finiscono nel repository. Quando stai raccogliendo le modifiche, metti in scena i file. Un file può avere contenuti diversi in ciascuna di queste posizioni.

Guarda anche: Tutorial Git avanzato

Potresti pensare di reimpostare un file come annullare le modifiche. Ma lo stato del tuo file determinerà quali modifiche stai effettivamente annullando. Il caso ovvio è quando apporti alcune modifiche, le impegni, quindi in seguito decidi che non le vuoi più.

Un altro caso potrebbe essere che hai messo in scena un file e ora vuoi rimuoverlo.

Come posso ripristinare un file precedentemente impegnato?

Affrontiamo un caso più semplice da comprendere: hai eseguito il commit di un file e ora desideri ripristinare le modifiche.

Il comando Git per farlo è, in modo un po' non intuitivo, chiamato guardare. Potresti aver usato guardare prima di cambiare ramo, ma questa è una piccola parte di ciò che il comando può fare. Ti consente inoltre di aggiornare i file nel tuo albero di lavoro in modo che corrispondano a quelli in qualsiasi momento nella cronologia del repository. Puoi farlo per un tag specifico, ramo o anche un particolare commit.

La forma più utile e generica di questo comando è:

git checkout [ID commit] -- percorso/a/file

Qui, stiamo passando un percorso specifico (percorso/a/file) che identifica solo un singolo file. Stiamo anche specificando un ID di commit per ottenere il file così com'era in quel commit specifico. Questo comando aggiornerà il file solo nel nostro albero di lavoro.

Si noti che il check-out di una versione precedente del file modifica la copia di lavoro, senza impegnarla o persino gestirla. Per completare completamente l'annullamento nel repository, dovrai mettere in scena il file e creare un nuovo commit.

Guarda anche: Come ispezionare la cronologia di un progetto con git log

Come posso cambiare ciò che sto mettendo in scena?

L'altro tipo di annullamento riguarda l'area di staging. Questo contiene le modifiche che apporterai accanto al repository. Se hai messo in scena una versione di un file e in seguito decidi di non includerlo nel commit successivo, ti consigliamo di rimuoverlo prima.

Puoi usare il git reset comando per annullare lo stage di un file organizzato:

git reset HEAD percorso/a/file

Posso annullare rapidamente le modifiche locali?

Sì, puoi annullare le modifiche a un file locale prima che venga messo in scena. Usa il seguente comando:

git checkout -- percorso/a/file

Nota che questo è simile al rollback di una modifica al repository, semplicemente omette l'ID di commit. Una volta eseguito questo comando, Git annullerà qualsiasi modifica alla tua copia di lavoro.

Che ne dici di git restore?

Le versioni successive di Git hanno un comando più recente: ristabilire. Per i casi semplici che abbiamo discusso qui, puoi utilizzare i seguenti equivalenti. Per annullare una modifica al repository:

git restore --source [id commit] percorso/a/file

Per annullare lo stage di un file utilizzare:

git restore --staged path/to/file

E per annullare le modifiche alla copia di lavoro:

git ripristino percorso/a/file

La potenza di versioning di Git è impagabile

Sebbene il ripristino di un file possa sembrare una cosa comune da fare, scoprirai che in pratica accade piuttosto raramente. È più probabile che eseguirai il rollback di interi commit piuttosto che di singoli file. Tuttavia, nelle occasioni in cui è necessario farlo, Git almeno lo rende abbastanza semplice.

Come rimuovere un file da commit in Git

Usa questi comandi Git per eseguire operazioni come la rimozione di un file da un commit.

Leggi Avanti

CondividereTweetE-mail
Argomenti correlati
  • Programmazione
  • GitHub
  • Sviluppo web
  • Programmazione
Circa l'autore
Bobby Jack (63 articoli pubblicati)

Bobby è un appassionato di tecnologia che ha lavorato come sviluppatore software per quasi due decenni. È appassionato di giochi, lavora come redattore capo presso Switch Player Magazine ed è immerso in tutti gli aspetti dell'editoria online e dello sviluppo web.

Altro da Bobby Jack

Iscriviti alla nostra Newsletter

Iscriviti alla nostra newsletter per suggerimenti tecnici, recensioni, ebook gratuiti e offerte esclusive!

Clicca qui per iscriverti