Kao softverski inženjer ili web programer, možda ćemo zahtijevati guranje mnogih obveza u naše Git spremište.
Međutim, postoje neki drugi slučajevi u kojima želimo predati datoteke koje neće biti gurnute u naše Git spremište. Prije izdavanja bilo kakvog obvezivanja, ponekad bismo mogli implementirati neke dodatne promjene.
Kao učinak, zahtijevamo da poništimo posljednje uvrštavanje putem našeg Git repozitorija. Vidjet ćemo kako možemo poništiti zadnji commit u ovoj temi.
Undo Last Git Commit zajedno s resetiranjem
Lako možemo poništiti zadnji git commit izvršavanjem naredbe, tj. 'git reset' zajedno s opcijom, tj. '-meko' koji će zaštititi sve promjene učinjene na našim datotekama. Moramo opisati obvezu za poništavanje koja je 'HEAD~1'.
Posljednji commit git-a bit će izbrisan iz našeg Git repozitorija.
$ git reset --soft HEAD~1
U ovoj notaciji,
'GLAVA~1': To znači da želimo resetirati ovu GLAVU na jednu predaju prije unutar povijesti dnevnika.
povezivanje s bazom podataka u Javi
$ git log --oneline 3fad532 Last commit (HEAD) 3bnaj03 Commit before HEAD (HEAD~1) Vcn3ed5 Two commits before HEAD (HEAD~2)
Kakav će biti učinak gornje naredbe?
Naredba, tj. 'git reset' može se promatrati kao naredba, tj. suprotno od 'git add' , u biti umetanje datoteka u Git indeks.
Ako se opisuje opcija '-meko' , Git uopće neće promijeniti datoteke unutar indeksa ili izvršnog direktorija.
Na primjer, uključili smo dvije datoteke unutar našeg nedavnog predavanja, iako želimo implementirati neke promjene u ovu datoteku.
kako izbrisati stupac u postgresql-u
$ git log --oneline --graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 Second commit *7083e29 Initial repository commit
Kao rezultat toga, prijavit ćemo se 'git reset' zajedno s opcijom '-meko' da biste poništili posljednje uvrštavanje i također implementirali neke dodatne promjene.
$ git reset --soft HEAD~1 $ git status
Preko grane majstor
Naša grana je master/origin ispred commita 1 (primijenite 'git push' za objavljivanje naših lokalnih commitova).
Izmjene koje treba izvršiti:
(apply 'git restore --staged …' to unstage)
nova datoteka: datoteka1
$ git log --oneline --graph *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit
Kao što možemo vidjeti, datoteka je i dalje u indeksu poništavanjem zadnjeg predavanja (izmjene koje treba izvršiti) iako je izvršenje izbrisano.
Uspješno smo izvršili posljednje uvrštavanje na našem repozitoriju.
Hard Reset Git commit
U gornjem odjeljku možemo smatrati da možemo lako poništi posljednje uvrštavanje i sačuvaj izmjene učinjeno na bilo koju datoteku unutar indeksa. Ali u nekim situacijama jednostavno želimo ukloniti promjene i obveze izvršene na bilo kojoj datoteci.
To je cilj opcije, tj. '-teško' .
Za poništavanje zadnjeg predavanja i uklanjanje svake izmjene unutar indeksa i direktorija, izvršite naredbu, tj. 'git reset' zajedno s opcijom, tj. '-teško' i opišite commit prije naredbe HEAD ('GLAVA~1') .
$ git reset --hard HEAD~1
Svaki commit i modifikacija bit će uklonjeni iz indeksa i direktorija nakon korištenja '--teško' naredba. Stoga bismo trebali biti oprezni.
Na primjer, svaku novu datoteku pod nazivom 'file1' pohranili smo u naše Git spremište.
$ git log --oneline --graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit
Pretpostavimo sada da želimo poništiti posljednje uvrštavanje i ukloniti svaku promjenu.
$ git reset --hard HEAD~1
Sada je HEAD na 90f8bb1 drugom predanju
Sada provjerimo stanje našeg git repozitorija.
pretvorba nfa u dfa
$ git status
Preko grane majstor
Naša grana je suvremena s master/origin (primijenite naredbu 'git push' za objavljivanje naših lokalnih obveza).
replaceall u nizu java
Sada nema ništa za predaju, a radno stablo je čisto.
Mješoviti reset Git commit
Držite izmjene unutar našeg radnog imenika, međutim, NE unutar indeksa. Moramo primijeniti naredbu, tj ., 'git reset' zajedno s opcijom, tj. '-mješoviti' . Nakon ove naredbe, moramo jednostavno dodati 'HEAD~1' posljednjem urezivanju.
$ git reset --mixed HEAD~1
Na primjer, uključili smo bilo koju datoteku pod nazivom 'file1' unutar bilo koje obveze koju želimo poništiti.
$ git log --oneline --graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit
Jednostavno, izvršimo naredbu, tj. 'git reset' zajedno s opcijom, tj. '-mješoviti' za poništavanje zadnje predaje.
Kao rezultat toga, '-mješoviti' naredba je a 'miješati' među tvrdim i mekim resetiranjem, pa mu je i ime.
Preko grane majstor
Naša grana je master/origin ispred commita 1 (primijenite 'git push' za objavljivanje naših lokalnih commitova).
Datoteke koje se ne prate: (primijenite 'git add...' za dodavanje unutar onoga što će se predati)
file1
Ništa nije uključeno za predaju, ali prisutne su datoteke koje se ne prate (primijenite 'git track' za praćenje).
Dakle, otkrili smo još jednu praksu vraćanja posljednjeg urezivanja čuvanjem izmjena učinjenih na datotekama.
Undo Last Commit zajedno s vraćanjem
Primijenite naredbu, tj. 'git vrati' i opišite predaju koju treba vratiti, tj. 'GLAVA' na predaju povijesti za vraćanje posljednje Git predaje.
$ git revert HEAD
Naredba 'git revert' je drugačija u usporedbi s naredbom 'git reset' jer može zabilježiti bilo koji novi commit zajedno s nekim izmjenama definiranim degeneracijom posljednjeg commita.
webdriver
Možemo opisati 'HEAD~1' naredbom 'git reset' jer će ova naredba za resetiranje postaviti bilo koje novo mjesto HEAD dok degenerira opisani commit.
Kao rezultat toga, ponovno ćemo unijeti izmjene u neke datoteke za vraćanje i obvezati se da se ne izvode. Predali smo svaku novu datoteku za naše spremište Gita, ali želimo degenerirati ovo predanje.
$ git log --oneline -graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit
Ako izvršite naredbu 'git revert', Git će otvoriti naš uređivač teksta da automatski izvrši izmjene.
Nova poruka će se prikazati zajedno s novim hashom predaje kada završimo s izvršavanjem poruke predaje.
[master 2d40a2c] Revert 'Added a new file named as file1' 1 file changed, 1 deletion(-) delete mode 100644 file1
Ako ponovno moramo provjeriti našu povijest Gita, možemo primijetiti novo uvrđivanje dodano za poništavanje zadnjeg urezivanja kroz naše spremište.
$ 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