Git Reflog - Kako oporaviti izbrisanu granu koja nije spojena



Ovaj članak o Git Reflogu sveobuhvatan je vodič za vraćanje izbrisanog razgranatog u Git uz pomoć Git Refloga.

„Jeste li ikad izgubili granu, čiji izvorni kod još nije bio spojen u grani„ release “ili„ main “? Što ako želite obnoviti izbrisanu granu iako je njezin rad već spojen u glavnu granu? ' . Pa, jedino rješenje za takve scenarije je Idite Reflog .

Kroz ovaj članak o Git Reflogu, pomoći ću vamrazumjeti scenarije u kojima bi vaš rad na grani mogao biti izgubljen i kako oporaviti granu.Također, ovaj će članak istaknuti pristup koji biste mogli poduzeti kako biste spriječili nenamjerni gubitak podružnice tijekom rada u velikom projektu.





    1. Što je Git Reflog?
    2. Kako i kada se grana briše?
    3. Obnovite izbrisanu granu
    4. Koji se rad obnavlja nakon oporavka izbrisane grane?
    5. Pod naredbe Git Reflog

Krenimo s ovim člankom.



Razmotrimo scenarij, a maintainer mora spojiti mnoge grane značajki različitih suradnika, a zatim ih na kraju izbrisati, ali se grana slučajno briše prije nego što se djelo može spojiti?

Pa, prije nego što pređem na ovaj članak, dopustite mi da vam kažem da to nije moguće u Gitu. su sigurni i ponašaju se kao da vam kontrolna pošta to ne dopušta. Dakle, ovdje se pojavljuje Git Reflog.

Što je Git Reflog?

TheNaredba ‘reflog’ zadržava a trag svaka pojedinačna promjena u referencama (grane ili oznake) spremišta i čuva povijest dnevnika grana i oznaka koje su ili stvorene lokalno ili odjavljene. Referentne zapisnike, kao što je snimka snimanja ureza kada je grana stvorena ili klonirana, odjavljena, preimenovana ili bilo koji predani podaci na grani, održava i naveden naredbom 'reflog'.



Bilješka: Podružnica će se moći povratiti iz vašeg radnog imenika samo ako je podružnica ikad postojala u vašem lokalnom spremištu, tj. grana je stvorena lokalno ili je odjavljena iz udaljenog spremišta u vašem lokalnom spremištu za Git za pohranu svojih dnevnika povijesti referenci.

Ova se naredba mora izvršiti u spremištu koje je imalo izgubljenu granu. Ako uzmete u obzirudaljenom repozitorijumu, tada morate izvršiti naredbu reflog na stroju programera koji je imao granu.

naredba: idi reflog

Sad kad znate, što je Git Reflog, pustite naspokušajte izbrisati i spojenu i ne-spojenu granu i vidjeti kako Git to rješava?

Korak 1: Navedite grane koje su spojene u master

Prvo pogledajte ' ovladati; majstorski ’Grana ako ste u nekoj drugoj grani pomoću naredbe:

$ git checkout master

Izlaz

razlika između hash tablice i hash mape

Git Checkout Master - Git Reflog - Edureka

Sada, da biste dobili popis spojenih grana, spomenite sljedeću naredbu:

$ git grana - spojena

Izlaz:

Korak 1.1: Zatim izbrišite spojenu granu:

$ git branch -d izdanje # 902

Izlaz:

Podružnica ‘issue # 902’ uspješno je izbrisana jer je već spojena u podružnicu ‘master’.

Korak 2: Nabrojimo sada grane koje nisu spojene u master.

$ git grana - nije spojeno

Izlaz

Korak 2.2: Konačno, izbrišimo ne-spojenu granu sljedećom naredbom:

$ git grana -d prepod

Ako pokušate izbrisati jednu od grana s nedovršenim poslom, recite „preprodano“, git prikazuje poruku upozorenja.

Izlaz

Prije nego što vam kažem kako možete oporaviti podatke iz ovog članka na Git Reflogu, dopustite mi da vam kažem što se točno događa kad se grana izbriše i pod kojim okolnostima se grana može oporaviti.

Kako i kada se grana briše?

Kao što znamo da je Git Distribuirani sustav kontrole verzija (DVCS), svaki stroj s klonom ili kopijom spremišta djeluje kao oboje čvor i a središte . Ovajpodrazumijeva da će svaki stroj imati vlastitu kopiju cjelokupnog koda spremišta i povijesti.Nepotrebno je reći da ćete biti dijeljenje vaš rad s drugima i objavljivanje isto.

Stoga u takvim scenarijima mogu postojati 3 slučaja kada se podružnica briše u stvarnom scenariju, a mnogi suradnici rade na velikom projektu. Mogu biti sljedeći slučajevi:

Slučaj 1 - programer može spojiti ili izbrisati granu

Razmotrite scenarij u kojem programer lokalno spoji granu značajke u glavnu granu, a zatim briše granu značajke pomoću ' git grana 'Naredba s '- d ”Zastava kao što se vidjelo na ranijim snimkama zaslona.

Naredba: ‘Git grana -d ime_granke’

Također se može dogoditi da programer odluči razbaciti promjene na grani i odluči izbrisati granu bez spajanja s bilo kojom drugom granom pomoću sljedeće naredbe:

Naredba: ‘Git grana -D ime_granke’

S gornjom naredbom programer jeprisilno izbrišite granu koja nadjačava upozorenje git

$ git grana -D pretprod

Izlaz

Bilješka : Grana „preprod“ više neće biti navedena kada pokrenete naredbu „git grana“. Dakle, godnaš rad sačuvan na ovoj grani će biti izgubljen.

stl sortiraj c ++

Slučaj 2 - programer briše granu u zajedničkom spremištu

Razmotrimo scenarij u kojem programer s pristupom za čitanje / pisanje pokušava nasilno izbrisati udaljenu granupomoću naredbe 'git push' sa zastavicom '–delete'.

$ git push origin --briši brzi popravak

Izlaz

Osim ovoga, mogao bi se dogoditi i slučaj da neovlašteni ili zlonamjerni korisnik prisili na brisanje udaljene grane.U tom će slučaju održavatelj moći oporaviti izbrisanu granu ‘brzog popravka’ samo ako je programerje prethodno provjerio ovu poslovnicu. U ovom će scenariju njegovo lokalno spremište i dalje imati svoje referentne zapisnike.

Ako održavatelj ne može oporaviti granu, tada se vlasnik grane koji ju je izbrisao mora oporaviti iz svojih lokalnih popravaka.

Slučaj 3 - skripta sa super privilegijama briše granu

Ovo bi mogao biti rijedak, ali mogući scenarij da se skripta zakačenja pokrene u određenom događaju git operacije i prisilno izbriše grane koje još nisu spojene. Možešuzmite u obzir da je jedna od gore spomenutih naredbi skriptirana u hook skripti sa sudo privilegijama.

Sada, kad znate što se događa, kada izbrišete granu, prijeđite na ovaj članak o Git Reflogu i pogledajte kako oporaviti izgubljenu granu.

Obnovite izbrisanu granu koristeći Git Reflog

Korak 1 : Povijesni zapisnici svih referenci

Nabavite popis svih evidentiranih dnevnika povijesti za sve reference ('master', 'uat' i 'prepod') u ovom spremištu.

idi reflog

Korak 2 : Prepoznajte povijesni pečat

Kao što se možete pozivati ​​iz gornjeg snimka, Istaknuti id predavanja: e2225bb zajedno s indeksom pokazivača HEAD: 4 je onaj kad preprodaja ’Grana je stvorena od trenutnog pokazivača HEAD koji ukazuje na vaše najnovije djelo.

3. korak : Oporavak

Za oporavak ‘Preprodaja ‘Grana koristi naredbu'Git checkout' prosljeđivanje reference na HEAD pokazivač s id-om indeksa - 4.Ovo je referenca na pokazivač kada je stvorena grana 'preprod' s dugim ID-om predavanja istaknutom na izlaznom snimku zaslona.

git checkout -b unaprijed predviđena GLAVA @ {4}

Izlaz

I voila! ' preprodaja 'Grana se vraća sa svim vašim izvornim kodom.

BILJEŠKA : Dopusti mi bponovno prikupite gore korištenu naredbu 'git checkout' i pomozite vam da bolje razumijete:

Naredba 'git checkout' prekomjerno je učitana naredba (Baš kao i svaka Java preopterećena funkcija). Ovo je dio u kojem se obnavlja stvarna grana.

Ova pojedinačna naredba prvo provjerava raniju vremensku oznaku povijesti koju je označio Pokazivač HEAD @ {4} a zatim kreira granu s imenom ‘preprodat’ pomoću opcije “-b”, kao i prebacuje vaš radni direktorij na novostvorenu granu.

To podrazumijeva da će se grana prebaciti iz 'master' u 'preprod', kao što je naznačeno na izlaznom zaslonu.Sada biste ga mogli spojiti s granom „master“ ili „release“ prema vašem modelu grananja.

Sad, kad znate kako vratiti granu, dopustite mi da vam kažem koji se rad obnavlja kada se obnovi izbrisana grana.

Koji se rad obnavlja nakon oporavka izbrisane grane?

Datoteke koje su skrivene i spremljene na popis indeksnih skladišta vratit će se natrag. Sve nepraćene datoteke bit će izgubljene. Također, t.j.dobra je ideja uvijek postavljati i predavati svoje radove ili ih skrivati.

Da biste dohvatili reference dnevnika određene grane ili oznake, pokrenite naredbu - 'git reflog'.

Primjer: Da biste provjerili reference dnevnika samo grane 'uat', upotrijebite naredbu - 'git reflog uat'.

Pod naredbe Git Reflog

idi reflog

Naredba za otvaranje stranice s priručnikom

$ git reflog --help

Izlaz

idi reflog pokazati

Prikazuje zapisnike reference navedene u naredbenom retku.

git reflog show master @ {0}

idi reflog isteći

preopterećenje funkcije u primjeru c ++

Ova se naredba koristi za obrezivanje starijih unosa ponovnog polaganja.

git reflog istječe

idi reflog izbrisati

Ova naredba briše pojedinačne unose iz povijesti ponovnog dnevnika.

git reflog brisanje

idi reflog postoji

Ova naredba provjerava ima li ref (grana ili oznaka) unose povijesti dnevnika ponovnog dnevnika.

git reflog postoji

Osim gore spomenutih naredbi, naredba “Git Reflog” uzima razne podnaredbe i različite opcije, ovisno o gore spomenutim podnaredbama. Za daljnje čitanje pokreni “ git reflog –pomoć ”S prozora terminala.

Ovim smo završili ovaj članak o Git Reflogu.Namjera DevOps-a je stvoriti kvalitetniji softver brže i s više pouzdanosti, pozivajući pritom na veću komunikaciju i suradnju između timova. Ako vas ovaj članak zaintrigira, c pakao Edureka, pouzdana tvrtka za internetsko učenje s mrežom od više od 250 000 zadovoljnih učenika raširenih širom svijeta. Edureka DevOps certifikacijski tečaj pomaže učenicima da shvate što je DevOps i steknu stručnost u raznim DevOps procesima i alatima kao što su Puppet, Jenkins, Nagios, Ansible, Chef, Saltstack i GIT za automatizaciju više koraka u SDLC-u.

Imate pitanje za nas? Molimo vas da ga spominjete u odjeljku za komentare članka 'Git Reflog', a mi ćemo vam se javiti što prije.