Idiota

Git Come ripristinare l'ultimo commit?

Git Come ripristinare l'ultimo commit?
Git è uno strumento efficace che tiene traccia del tuo codice. E una delle grandi caratteristiche dello strumento è che puoi facilmente controllare la tua cronologia e tornare indietro se hai commesso un errore. Creiamo una situazione in cui puoi ripristinare l'ultimo commit e vedere come funziona il comando Git revert.

Inizieremo con l'aggiunta di alcuni file. Nell'ultimo commit, aggiungeremo ed elimineremo file per creare una situazione disordinata. Quindi torneremo allo stato prima del caos.

Puoi creare una cartella chiamata /test ed eseguire i seguenti comandi per inizializzare Git e creare la situazione descritta sopra (stiamo facendo intenzionalmente commit separati per creare una cronologia):

$ git init
Repository Git vuoto inizializzato in /Users/zakh_eecs/_work/LearnGIT/git_revert/test/.idiota/
$ echo x > file_1.TXT
$ git add -A
$ git commit -m "Aggiunta file_1.TXT"
[master (root-commit) 08caf5d] Aggiunta di file_1.TXT
1 file modificato, 1 inserimento(+)
crea modalità 100644 file_1.TXT
$ echo y > file_2.TXT
$ git add -A
$ git commit -m "Aggiungo file_2.TXT"
[master ba18a2f] Aggiunta di file_2.TXT
1 file modificato, 1 inserimento(+)
crea modalità 100644 file_2.TXT
$ echo z > file_3.TXT
$ git add -A
$ git commit -m "Aggiungo file_3.TXT"
[master 97f09ad] Aggiunta di file_3.TXT
1 file modificato, 1 inserimento(+)
crea modalità 100644 file_3.TXT
$ echo u > file_4.TXT
$ git add -A
$ git commit -m "Aggiungo file_4.TXT"
[master 9caf084] Aggiunta file_4.TXT
1 file modificato, 1 inserimento(+)
crea modalità 100644 file_4.TXT
$ echo v > file_5.TXT
$ git add -A
$ git commit -m "Aggiungo file_5.TXT"
[master 3f228b2] Aggiunta file_5.TXT
1 file modificato, 1 inserimento(+)
crea modalità 100644 file_5.TXT

Se controlliamo la nostra cartella, dovremmo vedere la seguente situazione:

$ ls -1
file_1.TXT
file_2.TXT
file_3.TXT
file_4.TXT
file_5.TXT

Se controlliamo la cronologia, dovremmo avere i seguenti file:

$ git log --oneline
3f228b2 Aggiunta di file_5.TXT
9caf084 Aggiunta di file_4.TXT
97f09ad Aggiunta di file_3.TXT
ba18a2f Aggiunta di file_2.TXT
08caf5d Aggiunta di file_1.TXT

Ora creiamo un po' di caos, elimineremo alcuni file e aggiungeremo un file danneggiato.

$ rm file_2.TXT
$ rm file_4.TXT
$ echo w > mio_file_cattivo.TXT
$ git add -A
$ git commit -m "File aggiunti ed eliminati senza pensare alle conseguenze"
[master 879fbf8] File aggiunti ed eliminati senza pensare alle conseguenze
3 file modificati, 1 inserimento(+), 2 eliminazioni(-)
elimina modalità 100644 file_2.TXT
elimina modalità 100644 file_4.TXT
crea modalità 100644 my_bad_file.TXT

Ora, questa è la condizione della nostra cartella:

$ ls -1
file_1.TXT
file_3.TXT
file_5.TXT
mio_file_cattivo.TXT

E questa la condizione della nostra storia:

$ git log --oneline
879fbf8 File aggiunti ed eliminati senza pensare alle conseguenze
3f228b2 Aggiunta di file_5.TXT
9caf084 Aggiunta di file_4.TXT
97f09ad Aggiunta di file_3.TXT
ba18a2f Aggiunta di file_2.TXT
08caf5d Aggiunta di file_1.TXT

Ci rendiamo conto che non vogliamo l'ultimo commit 879fbf8. Quindi usiamo quanto segue il comando di ripristino:

$ git ripristina 879fbf8

Si aprirà una finestra di testo per la modifica del commento automatico:

Ripristina "File aggiunti ed eliminati senza pensare alle conseguenze"
 
Questo ripristina il commit 879fbf849c4bd6fb9a377604d6355c76b92a832c.
 
# Per favore inserisci il messaggio di commit per le tue modifiche. Linee che iniziano
# con '#' verrà ignorato e un messaggio vuoto interrompe il commit.
# Sul master di filiale
# Modifiche da eseguire:
#       nuovo file:   file_2.TXT
#       nuovo file:   file_4.TXT
#      eliminato:    my_bad_file.TXT
#

Puoi modificare il commento. Lo terremo così com'è. Non appena si salva la finestra dei commenti, l'attività di ripristino avrà luogo:

$ git ripristina 879fbf8
[master 6e80f0e] Ripristina "File aggiunti ed eliminati senza pensare alle conseguenze"
3 file modificati, 2 inserimenti(+), 1 cancellazione(-)
crea modalità 100644 file_2.TXT
crea modalità 100644 file_4.TXT
elimina la modalità 100644 my_bad_file.TXT

Diamo un'occhiata alla nostra cartella ora:

$ ls -1
file_1.TXT
file_2.TXT
file_3.TXT
file_4.TXT
file_5.TXT

I nostri file sono tornati in sequenza come prima. Tutte le aggiunte e le cancellazioni sono state ripristinate. Controlliamo il registro:

$ git log --oneline
 
6e80f0e Ripristina "File aggiunti ed eliminati senza pensare alle conseguenze"
879fbf8 File aggiunti ed eliminati senza pensare alle conseguenze
3f228b2 Aggiunta di file_5.TXT
9caf084 Aggiunta di file_4.TXT
97f09ad Aggiunta di file_3.TXT
ba18a2f Aggiunta di file_2.TXT
08caf5d Aggiunta di file_1.TXT

C'è un nuovo impegno 6e80f0e. Eventuali modifiche che facevano parte di 879fbf8 è stato annullato e poi commesso in 6e80f0e.

Avvertimento: Il comando Git reset ti consente di annullare anche i commit. Ma nel caso di reset (soprattutto hard reset), avrebbe cancellato il 879fbf8 commetti come se non fosse mai successo e non ci sarebbe stato niente 6e80f0e commettere. Con un comando di ripristino, tutti possono vedere i cambiamenti che hanno avuto luogo. Nel caso di reset, non viene lasciata traccia. Quindi è una cattiva idea usare il comando reset in un repository pubblico perché può causare confusione di massa. La regola d'oro è: non utilizzare il ripristino nei repository pubblici, utilizzare il ripristino che è più sicuro.

In conclusione:

Il comando Git revert è un modo veloce e conveniente per rimediare ai tuoi errori. È un comando che dovresti ricordare se lavori regolarmente con Git.

Ulteriori studi:

Motori di gioco gratuiti e open source per lo sviluppo di giochi Linux
Questo articolo tratterà un elenco di motori di gioco gratuiti e open source che possono essere utilizzati per lo sviluppo di giochi 2D e 3D su Linux....
Tutorial Shadow of the Tomb Raider per Linux
Shadow of the Tomb Raider è la dodicesima aggiunta alla serie Tomb Raider, un franchise di giochi d'azione e avventura creato da Eidos Montreal. Il gi...
Come aumentare gli FPS in Linux?
FPS sta per Fotogrammi al secondo. Il compito dell'FPS è misurare il frame rate nelle riproduzioni video o nelle prestazioni di gioco game. In parole ...