Git

Git Sådan gendannes sidste forpligtelse?

Git Sådan gendannes sidste forpligtelse?
Git er et effektivt værktøj, der holder styr på din kode. Og en af ​​de store funktioner i værktøjet er, at du nemt kan kontrollere din historie og vende tilbage, hvis du har lavet en fejl. Lad os skabe en situation, hvor du kan tilbageføre den sidste forpligtelse og se, hvordan Git revert-kommandoen fungerer.

Vi begynder med at tilføje et par filer. Ved den sidste forpligtelse skal vi både tilføje og slette filer for at skabe en rodet situation. Så vender vi tilbage til staten før kaoset.

Du kan oprette en mappe kaldet / test og køre følgende kommandoer for at initialisere Git og oprette den ovenfor beskrevne situation (vi laver med vilje separate forpligtelser for at oprette en historie):

$ git init
Initialiseret tomt Git-arkiv i / Brugere / zakh_eecs / _work / LearnGIT / git_revert / test /.git /
$ echo x> file_1.txt
$ git add -A
$ git commit -m "Tilføjelse af fil_1.txt "
[master (root-commit) 08caf5d] Tilføjelse af fil_1.txt
1 fil ændret, 1 indsættelse (+)
Opret tilstand 100644 file_1.txt
$ echo y> file_2.txt
$ git add -A
$ git commit -m "Tilføjelse af fil_2.txt "
[master ba18a2f] Tilføjelse af fil_2.txt
1 fil ændret, 1 indsættelse (+)
Opret tilstand 100644 file_2.txt
$ echo z> file_3.txt
$ git add -A
$ git commit -m "Tilføjelse af fil_3.txt "
[master 97f09ad] Tilføjelse af fil_3.txt
1 fil ændret, 1 indsættelse (+)
Opret tilstand 100644 file_3.txt
$ echo u> file_4.txt
$ git add -A
$ git commit -m "Tilføjelse af fil_4.txt "
[master 9caf084] Tilføjelse af fil_4.txt
1 fil ændret, 1 indsættelse (+)
Opret tilstand 100644 file_4.txt
$ echo v> file_5.txt
$ git add -A
$ git commit -m "Tilføjelse af fil_5.txt "
[master 3f228b2] Tilføjelse af fil_5.txt
1 fil ændret, 1 indsættelse (+)
Opret tilstand 100644 file_5.txt

Hvis vi tjekker vores mappe, skal vi se følgende situation:

$ ls -1
fil_1.txt
fil_2.txt
fil_3.txt
fil_4.txt
fil_5.txt

Hvis vi tjekker historikken, skal vi have følgende filer:

$ git log - online
3f228b2 Tilføjelse af fil_5.txt
9caf084 Tilføjelse af fil_4.txt
97f09ad Tilføjelse af fil_3.txt
ba18a2f Tilføjelse af fil_2.txt
08caf5d Tilføjelse af fil_1.txt

Lad os nu skabe noget kaos, vi sletter et par filer og tilføjer en dårlig fil.

$ rm-fil_2.txt
$ rm fil_4.txt
$ echo w> my_bad_file.txt
$ git add -A
$ git commit -m "Tilføjede og slettede filer uden at tænke på konsekvenser"
[master 879fbf8] Tilføjede og slettede filer uden at tænke på konsekvenserne
3 filer ændret, 1 indsættelse (+), 2 sletninger (-)
slet tilstand 100644 file_2.txt
slet tilstand 100644 file_4.txt
Opret tilstand 100644 my_bad_file.txt

Nu er dette betingelsen for vores mappe:

$ ls -1
fil_1.txt
fil_3.txt
fil_5.txt
min_bad_fil.txt

Og dette er betingelsen i vores historie:

$ git log - online
879fbf8 Tilføjede og slettede filer uden at tænke på konsekvenserne
3f228b2 Tilføjelse af fil_5.txt
9caf084 Tilføjelse af fil_4.txt
97f09ad Tilføjelse af fil_3.txt
ba18a2f Tilføjelse af fil_2.txt
08caf5d Tilføjelse af fil_1.txt

Vi er klar over, at vi ikke vil have den sidste forpligtelse 879fbf8. Så vi bruger følgende tilbagevendekommandoen:

$ git gendanne 879fbf8

Det åbner et tekstvindue til redigering af den automatiske kommentar:

Gendan "Tilføjede og slettede filer uden at tænke på konsekvenser"
 
Dette vender tilbage 879fbf849c4bd6fb9a377604d6355c76b92a832c.
 
# Indtast venligst meddelelsesforpligtelsen for dine ændringer. Linjer starter
# med '#' ignoreres, og en tom besked afbryder forpligtelsen.
# Om filialmester
# Ændringer, der skal begås:
# Ny fil: file_2.txt
# Ny fil: fil_4.txt
# Slettet: min_bad_fil.txt
#

Du kan ændre kommentaren. Vi vil beholde det som det er. Så snart du gemmer kommentarvinduet, finder tilbageførselsopgaven sted:

$ git gendanne 879fbf8
[master 6e80f0e] Gendan "Tilføjede og slettede filer uden at tænke på konsekvenser"
3 filer ændret, 2 indsættelser (+), 1 sletning (-)
Opret tilstand 100644 file_2.txt
Opret tilstand 100644 file_4.txt
slet tilstand 100644 my_bad_file.txt

Lad os se på vores mappe nu:

$ ls -1
fil_1.txt
fil_2.txt
fil_3.txt
fil_4.txt
fil_5.txt

Vores filer er tilbage i rækkefølge som før. Alle tilføjelser og sletninger er blevet tilbagekaldt. Lad os kontrollere loggen:

$ git log - online
 
6e80f0e Vend tilbage "Tilføjede og slettede filer uden at tænke på konsekvenser"
879fbf8 Tilføjede og slettede filer uden at tænke på konsekvenserne
3f228b2 Tilføjelse af fil_5.txt
9caf084 Tilføjelse af fil_4.txt
97f09ad Tilføjelse af fil_3.txt
ba18a2f Tilføjelse af fil_2.txt
08caf5d Tilføjelse af fil_1.txt

Der er en ny forpligtelse 6e80f0e. Eventuelle ændringer, der var en del af 879fbf8 blev fortaget og derefter begået i 6e80f0e.

Advarsel: Kommandoen Git reset giver dig også mulighed for at fortryde forpligtelser. Men i reset-tilfælde (især hard reset), ville det have slettet 879fbf8 begå som det aldrig skete, og der ville have været nej 6e80f0e begå. Med en tilbagevendende kommando kan alle se de ændringer, der har fundet sted. I nulstillingssagen er der ingen spor tilbage. Så det er en dårlig idé at bruge reset-kommandoen i et offentligt arkiv, fordi det kan forårsage masseforvirring. Den gyldne regel er - brug ikke nulstilling i offentlige opbevaringssteder, brug tilbagevenden, som er sikrere.

Afslutningsvis:

Kommandoen Git revert er en hurtig og bekvem måde at afhjælpe dine fejl på. Det er en kommando, du skal huske, hvis du arbejder regelmæssigt med Git.

Yderligere studier:

Sådan vises FPS-tæller i Linux-spil
Linux-spil fik et stort skub, da Valve annoncerede Linux-support til Steam-klient og deres spil i 2012. Siden da har mange AAA- og indiespil fundet ve...
Sådan downloades og afspilles Sid Meiers Civilization VI på Linux
Introduktion til spillet Civilization 6 er et moderne udtryk for det klassiske koncept, der blev introduceret i serien af ​​Age of Empires-spil. Ideen...
Sådan installeres og afspilles Doom på Linux
Introduktion til undergang Doom-serien opstod i 90'erne efter frigivelsen af ​​den originale Doom. Det var et øjeblikkeligt hit, og fra den tid af har...