logo

Kā git atsaukt pēdējo apņemšanos

Kā programmatūras inženieris vai tīmekļa izstrādātājs, iespējams, mūsu Git krātuvē mums būs jāpieliek daudzas saistības.

Tomēr ir daži citi gadījumi, kad mēs vēlamies nodot failus, kas netiks virzīti uz mūsu Git repozitoriju. Pirms jebkādu saistību izdošanas mēs dažkārt vēlēsimies ieviest dažas papildu izmaiņas.

Tā rezultātā mums ir jāatsauc pēdējā apņemšanās, izmantojot mūsu Git repozitoriju. Mēs redzēsim, kā mēs varam atsaukt pēdējo saistību šajā tēmā.

Atsaukt Last Git Commit kopā ar atiestatīšanu

Mēs varam viegli atsaukt pēdējo git apņemšanos, izpildot komandu, t.i., 'git reset' kopā ar opciju, t.i., '-mīksts' kas aizsargās visas mūsu failos veiktās izmaiņas. Mums ir jāapraksta apņemšanās atsaukt, kas ir 'HEAD~1'.

Pēdējā git apņemšanās tiks dzēsta no mūsu Git krātuves.

 $ git reset --soft HEAD~1 

Šajā apzīmējumā

'HEAD~1': Tas nozīmē, ka mēs vēlamies atiestatīt šo HEAD uz vienu apņemšanos pirms žurnāla vēstures.

string.formāts java
 $ git log --oneline 3fad532 Last commit (HEAD) 3bnaj03 Commit before HEAD (HEAD~1) Vcn3ed5 Two commits before HEAD (HEAD~2) 

Kāda būs iepriekš minētās komandas ietekme?

Komanda, t.i., 'git reset' var uzskatīt par komandu, t.i., pretēju 'git add' , būtībā ievietojot failus Git indeksā.

Ja apraksta iespēju '-mīksts' , Git vispār nemainīs failus indeksā vai izpilddirektorijā.

Piemēram, mēs esam iekļāvuši divus failus mūsu nesen veiktajā saistībā, lai gan mēs vēlamies ieviest dažas izmaiņas šajā failā.

 $ git log --oneline --graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 Second commit *7083e29 Initial repository commit 

Rezultātā mēs pieteiksimies 'git reset' kopā ar iespēju '-mīksts' lai atsauktu pēdējo apņemšanos un arī ieviestu dažas papildu izmaiņas.

 $ git reset --soft HEAD~1 $ git status 

Virs zaru meistara

Mūsu filiāle ir galvenā/izcelsme uz priekšu ar 1. apņemšanos (izmantojiet “git push”, lai publicētu mūsu vietējās saistības).

Veicamās izmaiņas:

 (apply 'git restore --staged …' to unstage) 

jauns fails: file1

ipconfig uz Ubuntu
 $ git log --oneline --graph *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit 

Kā redzam, fails joprojām atrodas rādītājā, atceļot pēdējo apņemšanos (izdarāmās modifikācijas), lai gan apņemšanās tika dzēsta.

Mēs esam veiksmīgi veikuši pēdējo apņemšanos savā krātuvē.

Grūti atiestatīt Git apņemšanos

Iepriekš minētajā sadaļā mēs varam uzskatīt, ka mēs to varam viegli atsaukt pēdējo apņemšanos un saglabāt izmaiņas tiek darīts jebkuram failam rādītājā. Bet dažās situācijās mēs vienkārši vēlamies noņemt jebkura faila izmaiņas un saistības.

Tas ir opcijas mērķis, t.i., '-grūti' .

Lai atsauktu pēdējo apņemšanos un noņemtu visas izmaiņas indeksā un direktorijā, izpildiet komandu, t.i., 'git reset' kopā ar opciju, t.i., '-grūti' un aprakstiet apņemšanos pirms komandas HEAD ('HEAD~1') .

 $ git reset --hard HEAD~1 

Visas saistības un modifikācijas tiks noņemtas no indeksa un direktorija pēc izmantošanas '--grūti' komandu. Tāpēc mums jābūt uzmanīgiem.

dfa automātu piemēri

Piemēram, mēs esam pievienojuši jebkuru jaunu failu ar nosaukumu “file1” mūsu Git repozitorijā.

 $ git log --oneline --graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit 

Tagad pieņemsim, ka vēlamies atsaukt pēdējo apņemšanos un noņemt visas izmaiņas.

 $ git reset --hard HEAD~1 

Tagad HEAD ir uz 90f8bb1 Otrā apņemšanās

Tagad pārbaudīsim mūsu git repozitorija stāvokli.

 $ git status 

Virs zaru meistara

Mūsu filiāle ir mūsdienīga ar galveno/izcelsmi (izmantojiet komandu 'git push', lai publicētu mūsu vietējās saistības).

pārvēršot virkni par int

Tagad nav ko apņemties, un darba koks ir tīrs.

Jauktā atiestatīšana Git commit

Saglabājiet izmaiņas mūsu darba direktorijā, taču NAV indeksā. Mums ir jāpiemēro komanda, t.i ., 'git reset' kopā ar opciju, t.i., '-jaukts' . Pēc šīs komandas mums ir jāpievieno 'HEAD~1' vienkārši pēdējai apņemšanai.

 $ git reset --mixed HEAD~1 

Piemēram, mēs esam iekļāvuši jebkuru failu ar nosaukumu 'file1' jebkurā saistībā, kas mums ir jāatsauc.

 $ git log --oneline --graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit 

Vienkārši izpildām komandu, t.i., 'git reset' kopā ar opciju, t.i., '-jaukts' par pēdējās apņemšanās atsaukšanu.

Tā rezultātā, '-jaukts' komanda ir a 'sajaukt' starp cieto un mīksto atiestatīšanu, tāpēc tā nosaukums.

Virs zaru meistara

Mūsu filiāle ir galvenā/izcelsme uz priekšu ar 1. apņemšanos (izmantojiet “git push”, lai publicētu mūsu vietējās saistības).

Nesekoti faili: (lietojiet “git add…”, lai pievienotu to, kas tiks apstiprināts)

 file1 

Apņemšanās veikšanai nekas nav iekļauts, taču ir neizsekoti faili (izsekošanai izmantojiet 'git track').

Tātad, mēs esam atklājuši citu praksi, lai atjaunotu pēdējo apņemšanos, saglabājot failos veiktās izmaiņas.

Atsaukt pēdējo apņemšanos kopā ar atsaukšanu

Lietojiet komandu, t.i., 'git revert' un aprakstiet apņemšanos, kas jāatgriež, t.i., 'GALVA' vēstures apņemšanai par pēdējās Git apņemšanās atsaukšanu.

 $ git revert HEAD 

Komanda “git revert” atšķiras no komandas “git reset”, jo tā var ierakstīt jebkuru jaunu apņemšanos kopā ar dažām modifikācijām, kas noteiktas, deģenerējot pēdējo apņemšanos.

Mēs varam aprakstīt 'HEAD~1' ar komandu 'git reset', jo šī atiestatīšanas komanda iestatīs jebkuru jaunu HEAD vietu, vienlaikus deģenerējot aprakstīto apņemšanos.

Rezultātā mēs atkārtoti veiksim dažu failu modifikācijas, lai tās atjaunotu, un apņemamies tos neveikt. Mēs esam izveidojuši jebkuru jaunu failu mūsu Git repozitorijā, taču mēs vēlamies deģenerēt šo apņemšanos.

 $ git log --oneline -graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit 

Ja izpildīsit komandu “git revert”, Git atvērs mūsu teksta redaktoru, lai automātiski veiktu izmaiņas.

Kā git atsaukt pēdējo apņemšanos

Kad būsim pabeiguši izpildes ziņojumu, tiks parādīts jauns ziņojums kopā ar jaunu apstiprināšanas jaucējkodu.

nosauciet pilsētu ASV
 [master 2d40a2c] Revert 'Added a new file named as file1' 1 file changed, 1 deletion(-) delete mode 100644 file1 

Ja mums vēlreiz jāpārbauda Git vēsture, mēs varam pamanīt jaunu saistību, kas pievienota, lai atsauktu pēdējo apņemšanos, izmantojot mūsu krātuvi.

 $ git log --oneline --graph *2d40a2c (HEAD -> master) Revert 'Added a new file named file1' *1fa26e9 Added a new file named as file1 *ee8b133 Second commit *a3bdedf Initial commit