17. Eliminarea unei confirmări dintr-o ramură

Obiective

  • Pentru a învăța să ștergeți ultimele confirmări ale sucursalei

Revert este o comandă puternică a secțiunii anterioare care vă permite să anulați orice confirmări în depozit. Cu toate acestea, atât confirmările originale, cât și cele anulate sunt văzute în istoric a ramurii (când se utilizează comanda git log).

Adesea, după ce a fost deja efectuată o comitere, ne dăm seama că a fost o greșeală. comanda de anulare care permite ștergerea imediată a comenzilor incorecte. Această comandă ar împiedica apariția uneia sau mai multor comiteri nedorite în istoricul git log.

01 Comanda de resetare

Am folosit deja comanda reset pentru a se potrivi cu zona tampon și comiterea selectată (comanda HEAD a fost utilizată în lecția anterioară).

Când este dată o referință de validare (de exemplu, o ramură, un hash sau un nume de etichetă), reset va …

  1. Suprascrieți ramura curentă, astfel încât să indice comiterea corectă
  2. Opțional, resetați zona tampon, astfel încât să respecte conformitatea specificată
  3. Opțional, resetați directorul de lucru, astfel încât acesta să se potrivească cu validarea specificată

02 Verificați istoricul nostru

Permiteți-ne să scanăm rapid istoricul de validare .

Executare:

git hist

Rezultat:

Vedem că ultimele două confirmări din această ramură sunt „Oops „și” Reveniți la Hopa „. Să le eliminăm cu comanda reset.

03 Marcați prima această ramură

Să marcăm ultima comitere cu tag, so you can find it after removing a commit(s).

Rulați:

git tag oops

04 Resetați comiterea la Oops anterioare

În istoricul de mai sus, comiterea etichetată „v1” este înainte de comiterea „Oops” și „Revine Oops”. Să resetăm ramura la acel punct. Deoarece ramura are o etichetă, putem folosi numele etichetei în comanda reset (dacă nu are o etichetă, putem utiliza valoarea hash).

Rulați:

git reset --hard v1git hist

Rezultat:

Filiala noastră principală arată spre commit v1, iar comitetele „Reveniți Hopa” și „Hopa” nu mai există în ramură. Parametrul --hard face ca directorul de lucru să reflecte noul cap de ramură.

05 Nimic nu se pierde vreodată

Ce s-a întâmplat cu comiterile greșite? Sunt încă în depozit. De fapt, ne putem referi la ele. La începutul lecției, am creat eticheta „oops” pentru validarea anulată. Să aruncăm o privire asupra tuturor confirmărilor.

Rulați:

git hist --all

Rezultat:

Putem vedea că comiterile greșite nu au dispărut. Nu mai sunt listate în ramura principală, dar rămân în depozit. Ar fi în continuare în depozit dacă nu le-am eticheta, dar le-am putea referi doar după numele lor hash. Confirmările neriferențiate rămân în depozit până când software-ul de colectare a gunoiului este rulat de sistem.

06 Resetare pericole

Resetările de pe filialele locale sunt de obicei inofensive. Consecințele oricărui „accident” pot fi anulate utilizând validarea corectă.

Cu toate acestea, alți utilizatori care partajează sucursala pot fi confundați dacă sucursala este partajată în depozite la distanță.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *