Git

Git Hvordan tilbakeføre siste forpliktelse?

Git Hvordan tilbakeføre siste forpliktelse?
Git er et effektivt verktøy som holder styr på koden din. Og en av de flotte funksjonene i verktøyet er at du enkelt kan sjekke historikken din og gå tilbake hvis du har gjort en feil. La oss lage en situasjon der du kan tilbakestille den siste forpliktelsen og se hvordan Git revert-kommandoen fungerer.

Vi skal begynne med å legge til noen få filer. Ved siste forpliktelse skal vi både legge til og slette filer for å skape en rotete situasjon. Så skal vi gå tilbake til staten før kaoset.

Du kan opprette en mappe som heter / test og kjøre følgende kommandoer for å initialisere Git og opprette situasjonen beskrevet ovenfor (Vi gjør med vilje separate forpliktelser for å lage en historie):

$ git init
Initialisert tomt Git-arkiv i / Brukere / zakh_eecs / _work / LearnGIT / git_revert / test /.git /
$ echo x> file_1.tekst
$ git add -A
$ git commit -m "Legger til file_1.tekst"
[master (root-commit) 08caf5d] Legger til file_1.tekst
1 fil endret, 1 innsetting (+)
opprett modus 100644 file_1.tekst
$ echo y> file_2.tekst
$ git add -A
$ git commit -m "Legger til fil_2.tekst"
[master ba18a2f] Legger til file_2.tekst
1 fil endret, 1 innsetting (+)
opprett modus 100644 file_2.tekst
$ echo z> file_3.tekst
$ git add -A
$ git commit -m "Legger til file_3.tekst"
[master 97f09ad] Legger til file_3.tekst
1 fil endret, 1 innsetting (+)
opprett modus 100644 file_3.tekst
$ echo u> file_4.tekst
$ git add -A
$ git commit -m "Legger til file_4.tekst"
[master 9caf084] Legger til file_4.tekst
1 fil endret, 1 innsetting (+)
opprett modus 100644 file_4.tekst
$ echo v> file_5.tekst
$ git add -A
$ git commit -m "Legger til file_5.tekst"
[master 3f228b2] Legger til file_5.tekst
1 fil endret, 1 innsetting (+)
opprett modus 100644 file_5.tekst

Hvis vi sjekker mappen vår, bør vi se følgende situasjon:

$ ls -1
file_1.tekst
file_2.tekst
fil_3.tekst
fil_4.tekst
fil_5.tekst

Hvis vi sjekker historikken, bør vi ha følgende filer:

$ git log --online
3f228b2 Legger til file_5.tekst
9caf084 Legger til file_4.tekst
97f09ad Legger til fil_3.tekst
ba18a2f Legger til file_2.tekst
08caf5d Legger til file_1.tekst

La oss nå skape litt kaos, vi skal slette noen få filer og legge til en dårlig fil.

$ rm file_2.tekst
$ rm file_4.tekst
$ echo w> my_bad_file.tekst
$ git add -A
$ git commit -m "Lagt til og slettet filer uten å tenke på konsekvenser"
[master 879fbf8] Lagt til og slettet filer uten å tenke på konsekvensene
3 filer endret, 1 innsetting (+), 2 slettinger (-)
slettemodus 100644 file_2.tekst
slettemodus 100644 file_4.tekst
opprett modus 100644 my_bad_file.tekst

Dette er tilstanden til mappen vår:

$ ls -1
file_1.tekst
fil_3.tekst
fil_5.tekst
min_bad_fil.tekst

Og dette er tilstanden i vår historie:

$ git log --online
879fbf8 Lagt til og slettet filer uten å tenke på konsekvensene
3f228b2 Legger til file_5.tekst
9caf084 Legger til file_4.tekst
97f09ad Legger til fil_3.tekst
ba18a2f Legger til file_2.tekst
08caf5d Legger til file_1.tekst

Vi innser at vi ikke vil ha den siste forpliktelsen 879fbf8. Så vi bruker følgende tilbakevendekommandoen:

$ git tilbakestille 879fbf8

Det åpner et tekstvindu for redigering av den automatiske kommentaren:

Tilbakestill "Lagt til og slettede filer uten å tenke på konsekvenser"
 
Dette tilbakestiller forpliktelse 879fbf849c4bd6fb9a377604d6355c76b92a832c.
 
# Vennligst skriv inn kommisjonsmeldingen for endringene dine. Linjer starter
# med '#' vil bli ignorert, og en tom melding avbryter forpliktelsen.
# På grenmester
# Endringer som skal begås:
# Ny fil: file_2.tekst
# Ny fil: file_4.tekst
# Slettet: min_bad_fil.tekst
#

Du kan endre kommentaren. Vi skal beholde det som det er. Så snart du lagrer kommentarvinduet, vil tilbakestillingsoppgaven finne sted:

$ git tilbakestille 879fbf8
[master 6e80f0e] Tilbakestill "Lagt til og slettede filer uten å tenke på konsekvenser"
3 filer endret, 2 innsettinger (+), 1 sletting (-)
opprett modus 100644 file_2.tekst
opprett modus 100644 file_4.tekst
slettemodus 100644 my_bad_file.tekst

La oss se på mappen vår nå:

$ ls -1
file_1.tekst
file_2.tekst
fil_3.tekst
fil_4.tekst
fil_5.tekst

Filene våre er tilbake i rekkefølge som før. Alle tilføyelser og slettinger er tilbakeført. La oss sjekke loggen:

$ git log --online
 
6e80f0e Tilbakestill "Lagt til og slettet filer uten å tenke på konsekvenser"
879fbf8 Lagt til og slettet filer uten å tenke på konsekvensene
3f228b2 Legger til file_5.tekst
9caf084 Legger til file_4.tekst
97f09ad Legger til fil_3.tekst
ba18a2f Legger til file_2.tekst
08caf5d Legger til file_1.tekst

Det er en ny forpliktelse 6e80f0e. Eventuelle endringer som var en del av 879fbf8 ble angret og deretter begått i 6e80f0e.

Advarsel: Kommandoen Git reset lar deg også angre forpliktelser. Men i tilbakestillingssaken (spesielt hard tilbakestilling), ville den ha slettet 879fbf8 begå som det aldri skjedde, og det ville ha vært nei 6e80f0e begå. Med en tilbakevendekommando kan alle se endringene som har funnet sted. I tilbakestillingssaken er det ingen spor igjen. Så det er en dårlig ide å bruke reset-kommandoen i et offentlig depot fordi det kan forårsake masseforvirring. Den gyldne regelen er - ikke bruk tilbakestilling i offentlige arkiver, bruk tilbakestilling som er tryggere.

For å konkludere:

Kommandoen Git revert er en rask og praktisk måte å avhjelpe feilene dine. Det er en kommando du bør huske hvis du jobber regelmessig med Git.

Videre studier:

Hvordan vise OSD-overlegg i fullskjerm Linux-apper og spill
Å spille fullskjermspill eller bruke apper i distraksjonsfri fullskjermmodus kan avskrekke deg fra relevant systeminformasjon som er synlig i et panel...
Topp 5 spillfangstkort
Vi har alle sett og elsket streaming av spill på YouTube. PewDiePie, Jakesepticye og Markiplier er bare noen av de beste spillerne som har tjent milli...
Hvordan utvikle et spill på Linux
For et tiår siden ville ikke mange Linux-brukere forutsi at deres favorittoperativsystem en dag ville være en populær spillplattform for kommersielle ...