Git

Git Kako razveljaviti zadnji prevzem?

Git Kako razveljaviti zadnji prevzem?
Git je učinkovito orodje, ki spremlja vašo kodo. Ena izmed odličnih lastnosti orodja je, da lahko enostavno preverite svojo zgodovino in se vrnete nazaj, če ste se zmotili. Ustvarimo situacijo, ko lahko razveljavite zadnjo odobritev in si oglejte, kako deluje ukaz Git revert.

Začeli bomo z dodajanjem nekaj datotek. Ob zadnji objavi bomo dodali in izbrisali datoteke, da bomo ustvarili neurejeno situacijo. Potem se bomo vrnili v stanje pred kaosom.

Ustvarite lahko mapo z imenom / test in zaženete naslednje ukaze, da inicializirate Git in ustvarite zgoraj opisano situacijo (namenoma ustvarjamo ločene zaveze za ustvarjanje zgodovine):

$ git init
Inicializirano prazno repozitorij Git v / Users / zakh_eecs / _work / LearnGIT / git_revert / test /.git /
$ echo x> file_1.txt
$ git add -A
$ git commit -m "Dodajanje datoteke_1.txt "
[master (root-commit) 08caf5d] Dodajanje datoteke_1.txt
1 datoteka spremenjena, 1 vstavitev (+)
ustvari način 100644 file_1.txt
$ echo y> datoteka_2.txt
$ git add -A
$ git commit -m "Dodajanje datoteke_2.txt "
[master ba18a2f] Dodajanje datoteke_2.txt
1 datoteka spremenjena, 1 vstavitev (+)
ustvari način 100644 file_2.txt
$ echo z> datoteka_3.txt
$ git add -A
$ git commit -m "Dodajanje datoteke_3.txt "
[master 97f09ad] Dodajanje datoteke_3.txt
1 datoteka spremenjena, 1 vstavitev (+)
ustvari način 100644 file_3.txt
$ echo u> datoteka_4.txt
$ git add -A
$ git commit -m "Dodajanje datoteke_4.txt "
[master 9caf084] Dodajanje datoteke_4.txt
1 datoteka spremenjena, 1 vstavitev (+)
ustvari način 100644 file_4.txt
$ echo v> datoteka_5.txt
$ git add -A
$ git commit -m "Dodajanje datoteke_5.txt "
[master 3f228b2] Dodajanje datoteke_5.txt
1 datoteka spremenjena, 1 vstavitev (+)
ustvari način 100644 file_5.txt

Če preverimo svojo mapo, bi morali videti naslednje:

$ ls -1
datoteka_1.txt
datoteka_2.txt
datoteka_3.txt
datoteka_4.txt
datoteka_5.txt

Če preverimo zgodovino, bi morali imeti naslednje datoteke:

$ git log --oneline
3f228b2 Dodajanje datoteke_5.txt
9caf084 Dodajanje datoteke_4.txt
97f09ad Dodajanje datoteke_3.txt
ba18a2f Dodajanje datoteke_2.txt
08caf5d Dodajanje datoteke_1.txt

Zdaj pa ustvarimo nekaj opustošenja, izbrisali bomo nekaj datotek in dodali slabo datoteko.

$ rm datoteka_2.txt
$ rm datoteka_4.txt
$ echo w> my_bad_file.txt
$ git add -A
$ git commit -m "Dodane in izbrisane datoteke brez razmišljanja o posledicah"
[mojster 879fbf8] Dodane in izbrisane datoteke brez razmišljanja o posledicah
3 datoteke spremenjene, 1 vstavljanje (+), 2 brisanja (-)
način brisanja 100644 file_2.txt
način brisanja 100644 file_4.txt
ustvari način 100644 my_bad_file.txt

To je pogoj naše mape:

$ ls -1
datoteka_1.txt
datoteka_3.txt
datoteka_5.txt
my_bad_file.txt

In to je pogoj naše zgodovine:

$ git log --oneline
879fbf8 Dodane in izbrisane datoteke brez razmišljanja o posledicah
3f228b2 Dodajanje datoteke_5.txt
9caf084 Dodajanje datoteke_4.txt
97f09ad Dodajanje datoteke_3.txt
ba18a2f Dodajanje datoteke_2.txt
08caf5d Dodajanje datoteke_1.txt

Zavedamo se, da nočemo zadnje odobritve 879fbf8. Torej uporabimo naslednji ukaz za vrnitev:

$ git revert 879fbf8

Odprlo se bo besedilno okno za urejanje samodejnega komentarja:

Razveljavi "Dodane in izbrisane datoteke brez razmišljanja o posledicah"
 
To razveljavi odobritev 879fbf849c4bd6fb9a377604d6355c76b92a832c.
 
# Prosimo, vnesite sporočilo za prevzem sprememb. Proge se začnejo
# z '#' bo prezrt, prazno sporočilo pa prekine objavo.
# Na poveljniku podružnice
# Spremenjene spremembe:
# Nova datoteka: datoteka_2.txt
# Nova datoteka: datoteka_4.txt
# Izbrisano: my_bad_file.txt
#

Komentar lahko spremenite. Tako bomo ohranili. Takoj ko shranite okno za komentar, bo izvedena naloga za povrnitev:

$ git revert 879fbf8
[master 6e80f0e] Razveljavi "Dodane in izbrisane datoteke brez razmišljanja o posledicah"
3 datoteke spremenjene, 2 vstavki (+), 1 brisanje (-)
ustvari način 100644 file_2.txt
ustvari način 100644 file_4.txt
način brisanja 100644 my_bad_file.txt

Poglejmo si zdaj našo mapo:

$ ls -1
datoteka_1.txt
datoteka_2.txt
datoteka_3.txt
datoteka_4.txt
datoteka_5.txt

Naše datoteke se vrnejo v zaporedju kot prej. Vsi dodatki in izbrisi so bili povrnjeni. Preverimo dnevnik:

$ git log --oneline
 
6e80f0e Razveljavi "Dodane in izbrisane datoteke brez razmišljanja o posledicah"
879fbf8 Dodane in izbrisane datoteke brez razmišljanja o posledicah
3f228b2 Dodajanje datoteke_5.txt
9caf084 Dodajanje datoteke_4.txt
97f09ad Dodajanje datoteke_3.txt
ba18a2f Dodajanje datoteke_2.txt
08caf5d Dodajanje datoteke_1.txt

Prišlo je do nove zaveze 6e80f0e. Vse spremembe, ki so bile del 879fbf8 je bila razveljavljena in nato storjena v 6e80f0e.

Opozorilo: Ukaz Git reset vam omogoča, da razveljavite tudi zaveze. Toda v primeru ponastavitve (zlasti pri trdi ponastavitvi) bi izbrisal 879fbf8 zavezati, kot da se ni nikoli zgodilo in ne bi bilo 6e80f0e zavezati. Z ukazom za vrnitev lahko vsi vidijo spremembe, ki so se zgodile. V primeru ponastavitve ni ostalo nobene sledi. Torej je slabo uporabiti ukaz za ponastavitev v javnem repozitoriju, ker lahko povzroči množično zmedo. Zlato pravilo je - ne uporabljajte ponastavitve v javnih skladiščih, uporabite razveljavitev, ki je varnejša.

V zaključku:

Ukaz Git revert je hiter in priročen način za odpravo napak. To je ukaz, ki si ga morate zapomniti, če redno delate z Gitom.

Nadaljni študij:

Kako namestiti in igrati Doom v Linuxu
Uvod v Doom Serija Doom je nastala v devetdesetih letih po izidu prvotnega Dooma. Bil je takojšen hit in od takrat naprej je serija iger prejela števi...
Vulkan za uporabnike Linuxa
Z vsako novo generacijo grafičnih kart vidimo, da razvijalci iger premikajo meje grafične zvestobe in se približujejo fotorealizmu. A kljub vsem kredi...
OpenTTD vs Simutrans
Ustvarjanje lastne simulacije prevoza je lahko zabavno, sproščujoče in izjemno vabljivo. Zato morate preizkusiti čim več iger, da boste našli tisto, k...