»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.
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
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.