În calitate de inginer software sau dezvoltator web, este posibil să avem nevoie de împingerea multor commit-uri către depozitul nostru Git.
Cu toate acestea, există și alte cazuri în care dorim să comităm fișierele care nu vor fi trimise în depozitul nostru Git. Înainte de a emite orice commit, este posibil să dorim să implementăm unele modificări suplimentare uneori.
Ca efect, trebuie să anulăm ultima comitere prin intermediul depozitului nostru Git. Vom vedea cum putem anula ultima comitere din acest subiect.
Anulați Last Git Commit împreună cu o resetare
Putem anula cu ușurință ultima comitere git executând comanda, adică „git reset” împreună cu o opțiune, adică '-moale' care va proteja toate modificările aduse fișierelor noastre. Trebuie să descriem commit-ul de anulare care este „HEAD~1”.
Ultimul commit al git va fi șters din depozitul nostru Git.
$ git reset --soft HEAD~1
În această notație,
„HEAD~1”: Înseamnă că dorim să resetam acest HEAD la un singur commit înainte de a intra în istoricul jurnalului.
java elseif
$ git log --oneline 3fad532 Last commit (HEAD) 3bnaj03 Commit before HEAD (HEAD~1) Vcn3ed5 Two commits before HEAD (HEAD~2)
Care va fi efectul comenzii de mai sus?
Comanda, adică „git reset” poate fi privit ca o comandă, adică opusul „git add” , inserând în esență fișiere în indexul Git.
Dacă descrieți opțiunea de '-moale' , Git nu va schimba deloc fișierele din index sau directorul de execuție.
De exemplu, am inclus două fișiere în comisia noastră recentă, deși dorim să implementăm unele modificări în acest fișier.
$ git log --oneline --graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 Second commit *7083e29 Initial repository commit
Ca urmare, vom aplica „git reset” împreună cu opţiunea de '-moale' pentru a anula ultima comitere și, de asemenea, pentru a implementa unele modificări suplimentare.
$ git reset --soft HEAD~1 $ git status
Peste stăpânul de ramură
Sucursala noastră este master/origine înainte de commit 1 (aplicați „git push” pentru publicarea commit-urilor noastre locale).
Modificările care trebuie efectuate:
(apply 'git restore --staged …' to unstage)
fișier nou: fișier1
caracter java în șir
$ git log --oneline --graph *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit
După cum putem vedea, totuși fișierul este în index prin anularea ultimului commit (modificări care urmează să fie comise), deși commit-ul a fost șters.
Am efectuat cu succes ultima comitere din depozitul nostru.
Hard Reset Git commit
Putem considera în secțiunea de mai sus că putem ușor anulați ultima comitere și păstrați modificările efectuat în orice fișier din index. Dar, în unele situații, pur și simplu dorim să eliminăm modificările și commit-urile făcute oricărui fișier.
Este un obiectiv al unei opțiuni, adică '-greu' .
Pentru a anula ultima comitere și pentru a elimina fiecare modificare din index și director, executați o comandă, adică „git reset” împreună cu opțiunea, adică '-greu' și descrieți un commit înainte de comanda HEAD ('HEAD~1') .
$ git reset --hard HEAD~1
Fiecare commit și modificare va fi eliminată din index și director după folosirea '--greu' comanda. Deci ar trebui să fim atenți.
string ti int
De exemplu, am trimis orice fișier nou numit „fișier1” în depozitul nostru Git.
$ git log --oneline --graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit
Acum, să presupunem că dorim să anulăm ultima comitere și să eliminăm fiecare modificare.
$ git reset --hard HEAD~1
Acum, HEAD este pe 90f8bb1 Second commit
Acum, să verificăm starea depozitului nostru git.
$ git status
Peste stăpânul de ramură
Filiala noastră este contemporană cu master/origine (aplicați comanda „git push” pentru publicarea comiterilor noastre locale).
şir.valoare a
Acum, nu este nimic de comis, iar arborele de lucru este curat.
Comitere mixtă de resetare Git
Păstrați modificarea în directorul nostru de lucru, totuși, NU în index. Trebuie să aplicăm comanda, i.e ., „git reset” împreună cu opțiunea, adică '-amestecat' . După această comandă, trebuie să atașăm „HEAD~1” pur și simplu la ultima comitere.
$ git reset --mixed HEAD~1
De exemplu, am inclus orice fișier numit „fișier1” în orice comit pe care trebuie să îl anulăm.
$ git log --oneline --graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit
Pur și simplu, executăm comanda, adică „git reset” împreună cu opțiunea, adică '-amestecat' pentru anularea ultimului comitere.
Drept urmare, '-amestecat' comanda este a 'amesteca' printre hard și soft resetare, deci numele său.
Peste stăpânul de ramură
Sucursala noastră este master/origine înainte de commit 1 (aplicați „git push” pentru publicarea commit-urilor noastre locale).
Fișiere neurmărite: (aplicați „git add…” pentru a adăuga în interiorul a ceea ce va fi comis)
file1
Nimic inclus pentru comitere, dar fișierele neurmărite sunt prezente (aplicați „git track” pentru urmărire).
Deci, am detectat o altă practică de a reveni la ultima comitere prin păstrarea modificărilor făcute fișierelor.
Anulați ultima comitere împreună cu revenirea
Aplicați comanda, adică „git reveni” și descrieți un angajament care urmează să fie anulat, adică 'CAP' la comiterea istoriei pentru a reveni la ultima comitere Git.
$ git revert HEAD
Comanda „git revert” este diferită în comparație cu comanda „git reset”, deoarece poate înregistra orice comitere nouă împreună cu unele modificări definite prin degenerarea ultimului comitere.
Putem descrie „HEAD~1” cu comanda „git reset”, deoarece această comandă de resetare va seta orice nou loc HEAD în timp ce degenerează commit-ul descris.
Ca urmare, vom comite din nou modificările unor fișiere pentru a le reveni și ne vom angaja să fie neefectuate. Am comis orice fișier nou pentru depozitul nostru de Git, dar dorim să degenerăm acest commit.
$ git log --oneline -graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit
Dacă executați comanda „git revert”, Git va deschide editorul nostru de text pentru a efectua automat modificările.
Un mesaj nou va apărea împreună cu un nou hash de comitere când terminăm de executat un mesaj de comitere.
int la șir de caractere java
[master 2d40a2c] Revert 'Added a new file named as file1' 1 file changed, 1 deletion(-) delete mode 100644 file1
Dacă trebuie să ne verificăm din nou istoricul Git, putem observa un nou commit adăugat pentru a anula ultimul comit prin intermediul depozitului nostru.
$ 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