Git Reflog - Kako obnoviti izbrisano vejo, ki ni bila združena



Ta članek o Git Reflogu je izčrpen vodnik po tem, kako obnoviti izbrisane razvejane v Gitu s pomočjo Git Reflog.

»Ste že kdaj izgubili vejo, katere izvorna koda še ni bila združena v veji‘ release ’ali‘ main ’? Kaj če želite obnoviti izbrisano vejo, čeprav je bilo njeno delo že združeno v glavno vejo? ' . No, edina rešitev za takšne scenarije je Pojdi Reflog .

Skozi ta članek o Git Reflogu vam bom pomagalrazumeti scenarije, v katerih bi lahko izgubili svoje delo na veji, in kako obnoviti vejo.Ta članek bo tudi poudaril pristop, ki bi ga lahko uporabili za preprečevanje nenamerne izgube podružnice med delom v velikem projektu.





    1. Kaj je Git Reflog?
    2. Kako in kdaj se podružnica izbriše?
    3. Obnovite izbrisano vejo
    4. Kakšno delo se obnovi, ko se obnovi izbrisana veja?
    5. Pod-ukazi Git Reflog

Začnimo s tem člankom.



Razmislite o scenariju, a maintainer mora združiti številne veje funkcij različnih sodelavcev in jih nato na koncu izbrisati, vendar se veja po naključju izbriše, preden se delo lahko združi?

No, preden nadaljujem s tem člankom, naj vam povem, da v Gitu ni mogoče. so varni in delujejo kot kontrolna pošta vam tega ne bi dovolila. Torej, tukaj nastopi Git Reflog.

Kaj je Git Reflog?

TheUkaz 'reflog' ohranja a skladba vsako spremembo v referencah (veje ali oznake) repozitorija in hrani zgodovino dnevnikov vej in oznak, ki so bile ustvarjene lokalno ali odjavljene. Referenčne dnevnike, kot je posnetek odobritve, kdaj je bila veja ustvarjena ali klonirana, odjavljena, preimenovana ali kakršne koli zaveze, narejene v veji, vzdržuje in naveden z ukazom 'reflog'.



Opomba: Podružnico bo mogoče obnoviti iz vašega delovnega imenika le, če je podružnica kdaj obstajala v vašem lokalnem repozitoriju, tj. veja je bila ustvarjena lokalno ali pa je bila odjavljena iz oddaljenega repozitorija v vašem lokalnem repozitoriju za Git, da shrani svoje dnevnike referenčne zgodovine.

Ta ukaz je treba izvesti v repozitoriju, ki je imel izgubljeno vejo. Če upoštevateoddaljenem repozitoriju, nato morate izvršiti ukaz reflog na računalniku razvijalca, ki je imel vejo.

ukaz: pojdi reflog

Zdaj, ko veste, kaj je Git Reflog, nam dovoliteposkusite izbrisati tako spojeno kot nezdruženo vejo in poglejte, kako Git to obravnava?

1. korak: navedite veje, ki so združene v glavno

Najprej si oglejte mojster ', Če ste v neki drugi veji z ukazom:

$ git checkout master

Izhod

Git Checkout Master - Git Reflog - Edureka

Zdaj, da dobite seznam združenih vej, omenite naslednji ukaz:

$ git podružnica - združena

Izhod:

Korak 1.1: Nato izbrišite združeno vejo:

$ git branch -d številka # 902

Izhod:

Podružnica ‘issue # 902’ je bila uspešno izbrisana, saj je že združena v podružnico ‘master’.

2. korak: Zdaj navedimo veje, ki niso združene v master.

$ git podružnica - ni združeno

Izhod

Korak 2.2: Na koncu izbrišemo še nezdruženo vejo z naslednjim ukazom:

$ git podružnica -d prepod

Če poskušate izbrisati eno od vej z nedokončanim delom, recite »predprodano«, git prikaže opozorilno sporočilo.

Izhod

Zdaj, preden vam povem, kako lahko obnovite podatke v tem članku na Git Reflogu, naj vam povem, kaj natančno se zgodi, ko se podružnica izbriše in pod kakšnimi okoliščinami jo je mogoče obnoviti.

Kako in kdaj se podružnica izbriše?

Kot vemo, da je Git a Distribuirani sistem za nadzor različic (DVCS), vsak stroj s klonom ali kopijo skladišča deluje kot oba vozlišče in a vozlišče . Topomeni, da bo imela vsaka naprava svojo kopijo celotne kode in zgodovine repozitorija.Ni treba posebej poudarjati, da boste izmenjavo vaše delo z drugimi in založništvo enako.

Tako lahko v takšnih scenarijih obstajajo trije primeri, ko se podružnica izbriše v resničnem scenariju, pri čemer veliko sodelavcev dela na velikem projektu. To bi lahko bili naslednji primeri:

Primer 1 - razvijalec lahko vejo združi ali izbriše

Razmislite o scenariju, v katerem razvijalec lokalno združi vejo funkcije v glavno vejo in nato izbriše vejo funkcije s pomočjo git podružnica 'Z ukazom '- d ”Zastava, kot je razvidno iz prejšnjih posnetkov zaslona.

Ukaz: 'Git podružnica -d ime_podružnice'

Lahko se zgodi tudi, da se razvijalec odloči, da bo spremembe na veji razvrstil v smeti in se odločil, da vejo izbriše, ne da bi jo združil z drugo vejo z naslednjim ukazom:

Ukaz: ‘Git podružnica -D ime_podružnice’

Z zgornjim ukazom je razvijalecprisilno izbrišite vejo, ki preglasi opozorilo git

$ git branch -D predprod

Izhod

kako ustvariti dnevniške datoteke v javi -

Opomba : Veja 'preprod' ne bo več na seznamu, ko zaženete ukaz 'git branch'. Torej, ynaše delo, shranjeno na tej veji, bo izgubljeno.

Primer 2 - razvijalec izbriše vejo v repozitoriju v skupni rabi

Razmislite o scenariju, v katerem razvijalec z dostopom za branje / pisanje poskuša na silo izbrisati oddaljeno vejoz uporabo ukaza ‘git push’ z zastavico ‘–delete’.

$ git push origin --delete hitri popravek

Izhod

Poleg tega lahko pride tudi do primera, ko neavtoriziran ali zlonamerni uporabnik sili, da odstrani oddaljeno vejo.V takem primeru bo vzdrževalec lahko obnovil izbrisano vejo »hitrih popravkov« le, če bo razvijalecje že preveril to vejo. V tem primeru bo njegovo lokalno skladišče še vedno imelo referenčne dnevnike.

Če vzdrževalec ne more obnoviti podružnice, mora lastnik podružnice, ki jo je izbrisal, obnoviti po svojih lokalnih popravkih.

Primer 3 - Skript s kljukami s super privilegiji izbriše vejo

To je lahko redek, vendar možen scenarij, da se skript kavlja sproži ob določenem dogodku git operacije in sila izbriše veje, ki še niso združene. Ti lahkorazmislite o tem, da je eden od zgoraj omenjenih ukazov skriptiran v ključnem skriptu s privilegiji sudo.

Zdaj, ko veste, kaj se zgodi, ko izbrišete vejo, nadaljujmo s tem člankom o Git Reflogu in si oglejte, kako obnoviti izgubljeno vejo.

Z Git Reflog obnovite izbrisano vejo

Korak 1 : Zgodovinski dnevniki vseh referenc

Pridobite seznam vseh zabeleženih dnevnikov zgodovine za vse reference ('master', 'uat' in 'prepod') v tem repozitoriju.

pojdi reflog

2. korak : Določite zgodovinski žig

Kot se lahko sklicujete na zgornji posnetek, Označen ID prevoda: e2225bb skupaj z indeksom kazalca HEAD: 4 je tista, ko preprod ’Je bila ustvarjena iz trenutnega kazalca HEAD, ki kaže na vaše zadnje delo.

3. korak : Okrevanje

Če želite obnoviti nazaj ‘preprod ‘Podružnica uporabi ukaz„Git checkout“, ki posreduje referenco kazalca HEAD z id-indeksom - 4.To je sklic na kazalec, ko je bila veja 'preprod' ustvarjena z dolgim ​​ID-jem odobritve, označenim na izhodni sliki zaslona.

git checkout -b predprod. HEAD @ {4}

Izhod

In voila! ' preprod 'Podružnica je obnovljena z vso izvorno kodo.

OPOMBA : Naj bponovno pridobite zgoraj uporabljeni ukaz 'git checkout' in vam pomagajo bolje razumeti:

Ukaz 'git checkout' je preobremenjen ukaz (tako kot katera koli preobremenjena funkcija Java). To je del, kjer je obnovljena dejanska veja.

Ta en ukaz najprej preveri prejšnji časovni žig zgodovine, ki ga kaže Kazalec HEAD @ {4} in nato z možnostjo “-b” ustvari vejo z imenom “preprod” in preklopi vaš delovni imenik na novo ustvarjeno vejo.

To pomeni, da bo preklopljena veja iz »glavnega« v »predprodano«, kot je prikazano na izhodnem zaslonu.Zdaj ga lahko združite z vejico »master« ali »release«, kot je določeno v vašem modelu razvejanja.

Zdaj, ko veste, kako obnoviti vejo, naj vam povem, kakšno delo se obnovi, ko se obnovi izbrisana veja.

Kakšno delo se obnovi, ko se obnovi izbrisana veja?

Datoteke, ki so bile shranjene in shranjene na seznamu indeksov zalog, bodo obnovljene nazaj. Vse datoteke, ki jim ni mogoče slediti, bodo izgubljene. Tudi jazDobro je, da svoje delo vedno uprizorite in predate svojemu delu ali ga pospravite.

Če želite pridobiti sklice v dnevniku določene veje ali oznake, zaženite ukaz - 'git reflog'.

Primer: Če želite preveriti sklice na dnevnik samo podružnice ‘uat’, uporabite ukaz - “git reflog uat”.

Pod-ukazi Git Reflog

pojdi reflog

Ukaz za odpiranje strani z navodili

$ git reflog --help

Izhod

pojdi reflog oddaja

Prikaže dnevnike sklica v ukazni vrstici.

git reflog show master @ {0}

pojdi reflog poteče

Ta ukaz se uporablja za obrezovanje starejših vnosov znova.

git reflog poteče

pojdi reflog izbriši

Ta ukaz izbriše posamezne vnose iz zgodovine ponovnega dnevnika.

git reflog delete

pojdi reflog obstaja

Ta ukaz preveri, ali ima ref (veja ali oznaka) vnose v zgodovino dnevnika ponovnega dnevnika.

git reflog obstaja

Poleg zgoraj omenjenih ukazov ukaz »Git Reflog« zajema različne podkomande in različne možnosti, odvisno od zgoraj omenjenih podkomand. Za nadaljnje branje teči “ git reflog –pomoč ”Iz okna terminala.

S tem smo zaključili ta članek o Git Reflogu.Namen DevOps je ustvariti kakovostnejšo programsko opremo hitreje in z večjo zanesljivostjo, hkrati pa povabiti k večji komunikaciji in sodelovanju med skupinami. Če vas ta članek zanima, c poglej Edureka, zaupanja vredno podjetje za spletno učenje z mrežo več kot 250.000 zadovoljnih učencev, ki se širijo po vsem svetu. Tečaj Edureka DevOps Certification Training pomaga učencem, da razumejo, kaj je DevOps, in pridobijo strokovno znanje v različnih procesih in orodjih DevOps, kot so Puppet, Jenkins, Nagios, Ansible, Chef, Saltstack in GIT za avtomatizacijo več korakov v SDLC.

Imate vprašanje za nas? Prosimo, omenite ga v oddelku za komentarje v članku 'Git Reflog' in kmalu se vam bomo oglasili.