Git

Git Kā atgriezt pēdējo apņemšanos?

Git Kā atgriezt pēdējo apņemšanos?
Git ir efektīvs rīks, kas seko jūsu kodam. Un viena no šī rīka lieliskajām iezīmēm ir tā, ka jūs varat viegli pārbaudīt savu vēsturi un atgriezties atpakaļ, ja esat kļūdījies. Izveidosim situāciju, kurā jūs varat atcelt pēdējo apņemšanos un redzēt, kā darbojas Git revert komanda.

Mēs sāksim ar dažu failu pievienošanu. Pēc pēdējās saistības mēs pievienosim un izdzēsīsim failus, lai izveidotu netīru situāciju. Tad mēs atgriezīsimies stāvoklī pirms haosa.

Jūs varat izveidot mapi ar nosaukumu / test un palaist šādas komandas, lai inicializētu Git un izveidotu iepriekš aprakstīto situāciju (Mēs apzināti veicam atsevišķas saistības, lai izveidotu vēsturi):

$ git init
Inicializēta tukša Git krātuve mapē / Lietotāji / zakh_eecs / _work / LearnGIT / git_revert / test /.git /
$ echo x> file_1.txt
$ git pievienot -A
$ git saistīt -m "Pievieno failu_1.txt "
[master (root-comm) 08caf5d] Faila pievienošana_1.txt
1 fails mainīts, 1 ievietots (+)
izveidot režīmu 100644 file_1.txt
$ echo y> file_2.txt
$ git pievienot -A
$ git saistīt -m "Pievieno failu_2.txt "
[master ba18a2f] Faila_2 pievienošana.txt
1 fails mainīts, 1 ievietots (+)
izveidot režīmu 100644 file_2.txt
$ echo z> file_3.txt
$ git pievienot -A
$ git saistīt -m "Pievieno failu_3.txt "
[master 97f09ad] Faila pievienošana_3.txt
1 fails mainīts, 1 ievietots (+)
izveidot režīmu 100644 file_3.txt
$ echo u> fails_4.txt
$ git pievienot -A
$ git saistīt -m "Faila pievienošana_4.txt "
[master 9caf084] Faila pievienošana_4.txt
1 fails mainīts, 1 ievietots (+)
izveidot režīmu 100644 file_4.txt
$ echo v> file_5.txt
$ git pievienot -A
$ git saistīt -m "Faila pievienošana_5.txt "
[master 3f228b2] Pievienojot failu_5.txt
1 fails mainīts, 1 ievietots (+)
izveidot režīmu 100644 file_5.txt

Pārbaudot mapi, mums vajadzētu redzēt šādu situāciju:

$ ls -1
fails_1.txt
file_2.txt
fails_3.txt
fails_4.txt
fails_5.txt

Ja pārbaudām vēsturi, mums vajadzētu būt šādiem failiem:

$ git log - tiešsaistē
3f228b2 Faila pievienošana_5.txt
9caf084 Faila pievienošana_4.txt
97f09ad Faila pievienošana_3.txt
ba18a2f Pievieno failu_2.txt
08caf5d Pievieno failu_1.txt

Tagad izveidosim zināmu postu, mēs izdzēsīsim dažus failus un pievienosim sliktu failu.

$ rm fails_2.txt
$ rm fails_4.txt
$ echo w> my_bad_file.txt
$ git pievienot -A
$ git saistīt -m "Pievienoti un izdzēsti faili, nedomājot par sekām"
[master 879fbf8] Pievienoja un izdzēsa failus, nedomājot par sekām
Mainīti 3 faili, 1 ievietošana (+), 2 dzēšana (-)
dzēst režīmu 100644 file_2.txt
dzēšanas režīms 100644 file_4.txt
izveidot režīmu 100644 my_bad_file.txt

Tagad tas ir mūsu mapes nosacījums:

$ ls -1
fails_1.txt
fails_3.txt
fails_5.txt
my_bad_file.txt

Un tas ir mūsu vēstures stāvoklis:

$ git log - tiešsaistē
879fbf8 Pievienoti un izdzēsti faili, nedomājot par sekām
3f228b2 Faila pievienošana_5.txt
9caf084 Faila pievienošana_4.txt
97f09ad Faila pievienošana_3.txt
ba18a2f Pievieno failu_2.txt
08caf5d Pievieno failu_1.txt

Mēs saprotam, ka mēs nevēlamies, lai pēdējā izdarītu 879fbf8. Tāpēc mēs izmantojam šādu komandu revert:

$ git revert 879fbf8

Tas atvērs teksta logu automātiskā komentāra rediģēšanai:

Atjaunot “Pievienotos un izdzēstos failus, nedomājot par sekām”
 
Tas atgriež 879fbf849c4bd6fb9a377604d6355c76b92a832c.
 
# Lūdzu, ievadiet saistību ziņojumu par izmaiņām. Līnijas sākas
# ar '#' tiks ignorēts, un tukšs ziņojums pārtrauc apņemšanos.
# Uz filiāles kapteiņa
# Izpildāmās izmaiņas:
# Jauns fails: file_2.txt
# Jauns fails: fails_4.txt
# Izdzēsts: my_bad_file.txt
#

Jūs varat modificēt komentāru. Mēs to paturēsim tā, kā tas ir. Tiklīdz saglabājat komentāru logu, tiks veikts atjaunošanas uzdevums:

$ git revert 879fbf8
[master 6e80f0e] Atjaunot "Pievienotos un izdzēstos failus, nedomājot par sekām"
Mainīti 3 faili, 2 ievietojumi (+), 1 dzēšana (-)
izveidot režīmu 100644 file_2.txt
izveidot režīmu 100644 file_4.txt
dzēst režīmu 100644 my_bad_file.txt

Apskatīsim mūsu mapi tūlīt:

$ ls -1
fails_1.txt
file_2.txt
fails_3.txt
fails_4.txt
fails_5.txt

Mūsu faili ir atgriezušies tādā secībā kā iepriekš. Visi papildinājumi un svītrojumi ir atcelti. Pārbaudīsim žurnālu:

$ git log - tiešsaistē
 
6e80f0e Atjaunot "Pievienotos un izdzēstos failus, nedomājot par sekām"
879fbf8 Pievienoti un izdzēsti faili, nedomājot par sekām
3f228b2 Faila pievienošana_5.txt
9caf084 Faila pievienošana_4.txt
97f09ad Faila pievienošana_3.txt
ba18a2f Pievieno failu_2.txt
08caf5d Pievieno failu_1.txt

Ir jauna saistība 6e80f0e. Visas izmaiņas, kas bija daļa no 879fbf8 tika atsaukts un pēc tam izdarīts 6e80f0e.

Brīdinājums: Git reset komanda ļauj atsaukt arī saistības. Bet atiestatīšanas gadījumā (īpaši cietajā atiestatīšanā) tas būtu izdzēsis 879fbf8 apņemties, kā tas nekad nav noticis, un nebūtu bijis 6e80f0e apņemties. Izmantojot komandu atgriezties, visi var redzēt notikušās izmaiņas. Atiestatīšanas gadījumā nav atstāta nekāda izsekošana. Tāpēc ir slikta ideja izmantot atiestatīšanas komandu publiskā repozitorijā, jo tas var izraisīt masu neskaidrības. Zelta likums ir - neizmantojiet atiestatīšanu publiskajos krātuvēs, izmantojiet drošāku atjaunošanu.

Noslēgumā:

Git revert komanda ir ātrs un ērts veids, kā novērst kļūdas. Tā ir komanda, kas jums jāatceras, ja regulāri strādājat ar Git.

Turpmāka izpēte:

Kā izmantot Xdotool, lai stimulētu peles klikšķus un taustiņsitienus Linux
Xdotool ir bezmaksas un atvērtā koda komandrindas rīks peles klikšķu un taustiņu simulāciju simulēšanai. Šajā rakstā būs īss ceļvedis par xdotool izma...
5 labākie ergonomiskie datoru peles izstrādājumi Linux
Vai ilgstoša datora lietošana izraisa sāpes plaukstas locītavā vai pirkstos? Vai jūs ciešat no stīvām locītavām un jums pastāvīgi ir jāspiež rokas? Va...
How to Change Mouse and Touchpad Settings Using Xinput in Linux
Most Linux distributions ship with “libinput” library by default to handle input events on a system. It can process input events on both Wayland and X...