logo

Kaip git anuliuoti paskutinį įsipareigojimą

Mums, kaip programinės įrangos inžinieriams ar žiniatinklio kūrėjams, gali prireikti daug įsipareigojimų mūsų Git saugykloje.

Tačiau yra ir kitų atvejų, kai norime įrašyti failus, kurie nebus perkelti į mūsų Git saugyklą. Prieš įsipareigodami, kartais galbūt norėsite atlikti kai kuriuos papildomus pakeitimus.

Dėl to turime atšaukti paskutinį įsipareigojimą per mūsų Git saugyklą. Pažiūrėsime, kaip galime atšaukti paskutinį šios temos įsipareigojimą.

Anuliuoti Last Git Commit kartu su atstatymu

Paskutinį git įsipareigojimą galime lengvai anuliuoti vykdydami komandą, t.y. „git reset“ kartu su galimybe, t.y. '-minkštas' kuri apsaugos visus mūsų failų pakeitimus. Turime apibūdinti įsipareigojimą anuliuoti, kuris yra „HEAD~1“.

Paskutinis git įsipareigojimas bus ištrintas iš mūsų Git saugyklos.

 $ git reset --soft HEAD~1 

Šiame užraše

'HEAD~1': Tai reiškia, kad norime iš naujo nustatyti šią HEAD į vieną įsipareigojimą žurnalo istorijoje.

dydžio šriftas lateksas
 $ git log --oneline 3fad532 Last commit (HEAD) 3bnaj03 Commit before HEAD (HEAD~1) Vcn3ed5 Two commits before HEAD (HEAD~2) 

Koks bus aukščiau pateiktos komandos poveikis?

Komanda, t.y. „git reset“ gali būti vertinama kaip komanda, ty priešinga 'git add' , iš esmės įterpiant failus į Git indeksą.

Jei aprašoma galimybė '-minkštas' , Git apskritai nepakeis failų indekse ar vykdomajame kataloge.

Pavyzdžiui, mes įtraukėme du failus į neseniai atliktą įsipareigojimą, nors norime atlikti kai kuriuos šio failo pakeitimus.

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

Dėl to mes taikysime „git reset“ kartu su galimybe '-minkštas' anuliuoti paskutinį įsipareigojimą ir atlikti kai kuriuos papildomus pakeitimus.

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

Virš šakos meistro

Mūsų filialas yra pagrindinis / kilęs į priekį pagal 1 įsipareigojimą (taikyti „git push“, kad paskelbtumėte mūsų vietinius įsipareigojimus).

Pakeitimai, kuriuos reikia padaryti:

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

naujas failas: file1

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

Kaip matome, failas vis tiek yra indekse, anuliavus paskutinį įvykdymą (pakeitimus, kuriuos reikia atlikti), nors įsipareigojimas buvo ištrintas.

Sėkmingai atlikome paskutinį įsipareigojimą savo saugykloje.

mano gyvas kriketas

Hard Reset Git commit

Aukščiau pateiktame skyriuje galime manyti, kad galime lengvai anuliuoti paskutinį įsipareigojimą ir išsaugoti pakeitimus atliekama bet kuriam indekse esančiam failui. Tačiau kai kuriais atvejais mes tiesiog norime pašalinti bet kurio failo pakeitimus ir įsipareigojimus.

Tai yra pasirinkimo tikslas, t.y. '-sunku' .

Norėdami anuliuoti paskutinį įsipareigojimą ir pašalinti kiekvieną indekso ir katalogo modifikaciją, vykdykite komandą, t.y. „git reset“ kartu su galimybe, t.y. '-sunku' ir aprašykite įsipareigojimą prieš komandą HEAD („HEAD~1“) .

 $ git reset --hard HEAD~1 

Kiekvienas įsipareigojimas ir modifikavimas bus pašalintas iš indekso ir katalogo panaudojus '--sunku' komandą. Taigi turėtume būti atsargūs.

Pavyzdžiui, bet kokį naują failą pavadinimu „file1“ įtraukėme į savo „Git“ saugyklą.

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

Dabar tarkime, kad norime anuliuoti paskutinį įsipareigojimą ir pašalinti kiekvieną pakeitimą.

atsitiktinė tvarka sql
 $ git reset --hard HEAD~1 

Dabar HEAD yra 90f8bb1 antrasis įsipareigojimas

Dabar patikrinkime savo git saugyklos būseną.

 $ git status 

Virš šakos meistro

Mūsų filialas yra šiuolaikiškas su master/origin (taikyti komandą „git push“, kad paskelbtumėte mūsų vietinius įsipareigojimus).

kaip konvertuoti eilutę į int java

Dabar nėra ko įsipareigoti, o darbinis medis švarus.

Mišrus Reset Git įsipareigojimas

Laikykite pakeitimus mūsų darbo kataloge, tačiau NE indekse. Turime taikyti komandą, t.y ., „git reset“ kartu su galimybe, t.y. '-mišrus' . Po šios komandos turime pridėti 'HEAD~1' tiesiog prie paskutinio įsipareigojimo.

 $ git reset --mixed HEAD~1 

Pavyzdžiui, mes įtraukėme bet kokį failą pavadinimu „file1“ į bet kokį įsipareigojimą, kurį turime anuliuoti.

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

Tiesiog vykdome komandą, t.y. „git reset“ kartu su galimybe, t.y. '-mišrus' už paskutinio įsipareigojimo anuliavimą.

Dėl to, '-mišrus' komanda yra a 'maišyti' tarp kietojo ir minkšto atstatymo, todėl jo pavadinimas.

Virš šakos meistro

Mūsų filialas yra pagrindinis / kilęs į priekį pagal 1 įsipareigojimą (taikyti „git push“, kad paskelbtumėte mūsų vietinius įsipareigojimus).

Nesekami failai: (naudokite „git add…“, jei norite įtraukti į tai, kas bus įpareigota)

 file1 

Įsipareigojimui nieko neįtraukta, bet yra nesekamų failų (stebėjimui taikykite „git track“).

Taigi, mes aptikome kitą praktiką grąžinti paskutinį įsipareigojimą išsaugant failų pakeitimus.

seleno pamoka

Anuliuoti paskutinį įsipareigojimą kartu su grąžinimu

Taikykite komandą, t.y. 'git revert' ir apibūdinkite įsipareigojimą, kurį reikia grąžinti, t. y. 'GALVA' istorijos įsipareigojimui už paskutinio Git įsipareigojimo grąžinimą.

 $ git revert HEAD 

Komanda „git revert“ skiriasi nuo komandos „git reset“, nes ji gali įrašyti bet kokį naują įvykdymą kartu su kai kuriais pakeitimais, apibrėžtais degeneruojant paskutinį įvykdymą.

„HEAD~1“ galime apibūdinti naudodami komandą „git reset“, nes ši atstatymo komanda nustatys bet kokią naują HEAD vietą, tuo pačiu pablogindama aprašytą įsipareigojimą.

Dėl to kai kurių failų pakeitimus vėl patvirtinsime, kad jie būtų grąžinti, ir įsipareigojame, kad jie nebus atlikti. Įsipareigojome bet kokį naują failą savo Git saugykloje, bet norime pakeisti šį įsipareigojimą.

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

Jei vykdysite komandą „git revert“, „Git“ atidarys teksto rengyklę, kad pakeitimai būtų atlikti automatiškai.

Kaip git anuliuoti paskutinį įsipareigojimą

Kai baigsime vykdyti įvykdymo pranešimą, bus rodomas naujas pranešimas kartu su nauju įvykdymo maišos pranešimu.

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

Jei turėsime dar kartą patikrinti savo Git istoriją, galime pastebėti naują įsipareigojimą, pridėtą, kad būtų atšauktas paskutinis įsipareigojimas per mūsų saugyklą.

 $ 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