Git Reflog - kā atgūt izdzēstu filiāli, kas netika apvienota



Šis raksts par Git Reflog ir visaptverošs ceļvedis, kā ar Git Reflog palīdzību atjaunot izdzēsto sazaroto Git.

“Vai esat kādreiz pazaudējis filiāli, kuras pirmkods vēl nebija apvienots filiālē“ release ”vai“ main ”? Ko darīt, ja vēlaties atjaunot izdzēstu filiāli, kaut arī tās darbs jau ir apvienots galvenajā filiālē? ” . Nu, vienīgais risinājums šādiem scenārijiem ir Iet uz Reflog .

Izmantojot šo rakstu vietnē Git Reflog, es jums palīdzēšuizprot scenārijus, kādos varētu pazust darbs pie filiāles un kā filiāli atgūt.Arī šajā rakstā tiks uzsvērta pieeja, kuru jūs varētu izmantot, lai novērstu netīšu filiāles zaudēšanu, strādājot lielā projektā.





    1. Kas ir Git Reflog?
    2. Kā un kad filiāle tiek izdzēsta?
    3. Atgūt izdzēsto filiāli
    4. Kāds darbs tiek atjaunots, kad tiek izdzēsts izdzēstais zars?
    5. Git Reflog apakškomandas

Tātad, sāksim darbu ar šo rakstu.



Apsveriet scenāriju, maintaineram ir jāapvieno daudzas funkciju filiāles no dažādiem līdzstrādniekiem un pēc tam tās jāizdzēš, bet filiāle tiek nejauši izdzēsta, pirms darbu var apvienot?

Nu, pirms es turpinu šo rakstu, ļaujiet man jums pateikt, ka tas nav iespējams Git. ir droši un darbojas kā kontrolpunkts, tas jums neļautu. Tātad šeit parādās Git Reflog.

Kas ir Git Reflog?

The‘Reflog’ komanda saglabā a dziesma katras izmaiņas, kas veiktas atsaucēs (zari vai tagi) krātuvē un glabā lokāli izveidotu vai pārbaudītu zaru un tagu žurnālu vēsturi. Atsauces žurnālus, piemēram, saistību momentuzņēmumu, kad filiāle tika izveidota vai klonēta, reģistrēta, pārdēvēta vai jebkuras filiālē veiktās saistības, uztur un uzskaitīti ar komandu ‘reflog’.



Piezīme: Filiāli no jūsu darba direktorija varēs atgūt tikai tad, ja filiāle kādreiz pastāvēja jūsu vietējā repozitorijā, t.i. filiāle tika izveidota lokāli vai reģistrēta no attālā repozitorija jūsu vietējā repozitorijā, lai Git glabātu tā atsauces vēstures žurnālus.

Šī komanda ir jāizpilda repozitorijā, kurā bija nozaudēta filiāle. Ja jūs uzskatātattālās krātuves situācija, tad jums ir jāizpilda reflog komanda izstrādātāja mašīnā, kurai bija filiāle.

komanda: iet reflog

Tagad, kad zināt, kas ir Git Reflog, ļaujiet mums to darītmēģiniet izdzēst gan apvienoto, gan neapvienoto filiāli un uzziniet, kā Git rīkojas ar to?

1. solis: uzskaitiet filiāles, kas ir apvienotas galvenajā

Vispirms pārbaudiet meistars Filiāle, ja atrodaties kādā citā filiālē, izmantojot komandu:

$ git norēķinu meistars

Rezultāts

Git Checkout Master - Git Reflog - Edureka

Tagad, lai iegūtu apvienoto filiāļu sarakstu, miniet šādu komandu:

$ git filiāle - apvienojusies

Izeja:

1.1. Darbība. Pēc tam izdzēsiet apvienoto filiāli:

$ git filiāle - d jautājums # 902

Izeja:

Filiāle ‘issue # 902’ tika veiksmīgi izdzēsta, jo tā jau ir apvienota ‘master’ filiālē.

2. solis: Tagad uzskaitīsim filiāles, kas nav apvienotas kapteiņā.

$ git filiāle - nav apvienota

Rezultāts

2.2. Solis: Visbeidzot, izdzēsīsim neapvienoto filiāli ar šādu komandu:

$ git filiāle -d prepod

Ja mēģināt izdzēst vienu no filiālēm ar nepabeigtu darbu, sakiet “preprod” filiāli, git parāda brīdinājuma ziņojumu.

Rezultāts

Tagad, pirms es jums pastāstīšu, kā jūs varat atgūt šajā rakstā iekļautos datus vietnē Git Reflog, ļaujiet man pastāstīt, kas tieši notiek, kad filiāle tiek izdzēsta un kādos apstākļos filiāli var atgūt.

Kā un kad filiāle tiek izdzēsta?

Kā mēs zinām, ka Git ir a Izplatītā versiju kontroles sistēma (DVCS), katra mašīna ar klonu vai repozitorija kopija darbojas kā abi mezgls un a rumbas . Šisnozīmē, ka katrai mašīnai būs sava visa krātuves koda un vēstures kopija.Lieki teikt, ka būsi dalīšanās savu darbu ar citiem un publicēšana tas pats.

Tādējādi šādos scenārijos var būt 3 gadījumi, kad filiāle tiek izdzēsta reālās situācijās, kad daudzi līdzstrādnieki strādā pie liela projekta. Varētu būt šādi gadījumi:

1. gadījums - izstrādātājs var apvienot vai izdzēst filiāli

Apsveriet scenāriju, kurā izstrādātājs lokalizēti apvieno objekta atzari galvenajā filiālē un pēc tam izdzēš filiāles filiāli, izmantojot ‘ git filiāle ’Komandu ar“ - d Karodziņš, kā redzams iepriekšējos ekrānuzņēmumos.

Komanda: ‘Git branch -d filiāles_nosaukums’

Var gadīties arī, ka izstrādātājs nolemj izmest zarā veiktās izmaiņas un izlemj dzēst filiāli, nesapludinot to ar citu filiāli, izmantojot šādu komandu:

Komanda: ‘Git branch -D branch_name’

Izmantojot iepriekš minēto komandu, izstrādātājs irpiespiedu kārtā izdzēsiet filiāli, kas ir svarīgāks par brīdinājumu

$ git filiāle -D preprod

Rezultāts

Piezīme : ‘Preprod’ filiāle vairs netiks rādīta, palaižot komandu ‘git branch’. Tātad, ymūsu darbs, kas saglabāts šajā zarā, tiks zaudēts.

2. gadījums - izstrādātājs izdzēš filiāli koplietojamā krātuvē

Apsveriet scenāriju, kurā izstrādātājs ar lasīšanas / rakstīšanas piekļuvi mēģina spēcīgi izdzēst attālo filiāliizmantojot komandu ‘git push’ ar karogu ‘–delete’.

mvc piemērs Java
$ git push origin - dzēst ātro labojumu

Rezultāts

Bez tam var būt arī gadījums, kad neatļauts vai ļaunprātīgs lietotājs piespiež dzēst attālo filiāli.Šādā gadījumā uzturētājs varēs atgūt izdzēsto “quickfix” filiāli tikai tad, ja izstrādātājs to izdarīsiepriekš bija pārbaudījis šo filiāli. Šajā scenārijā tā vietējā repozitorijā joprojām būs atsauces žurnāli.

Ja uzturētājs filiāli nevar atgūt, filiāles īpašniekam, kurš to izdzēsa, jāatgūst vietējie reflogi.

3. gadījums - āķa skripts ar lieliskām privilēģijām dzēš filiāli

Tas varētu būt rets, bet iespējams scenārijs, ka āķa skripts tiek aktivizēts noteiktā git operācijas notikumā un spēks izdzēš filiāles, kas vēl nav apvienotas. Jūs varatapsveriet, vai viena no iepriekšminētajām komandām tiek skripta āķa skriptā ar sudo privilēģijām.

Tagad, kad jūs zināt, kas notiek, dzēšot filiāli, ļaujiet mums turpināt darbu ar šo rakstu vietnē Git Reflog un uzziniet, kā atgūt zaudēto filiāli.

Atgūt izdzēsto filiāli, izmantojot Git Reflog

1. solis : Visu atsauču vēstures žurnāli

Iegūstiet visu vietējo reģistrēto vēstures žurnālu sarakstu ar visām atsaucēm (‘master’, ‘uat’ un ‘prepod’) šajā krātuvē.

iet reflog

2. solis : Identificējiet vēstures zīmogu

Kā jūs varat atsaukties no iepriekš minētā momentuzņēmuma, Izceltais saistības ID: e2225bb kopā ar HEAD rādītāja indeksu: 4 ir tas, kad ‘ tālākpārdošana Filiāle tika izveidota no pašreizējā HEAD rādītāja, kas norāda uz jūsu jaunāko darbu.

3. solis : Atgūt

Lai atgūtu atpakaļ ‘Tālākpārdošana ‘Filiāle izmanto komandu“Git checkout”, nokārtojot norādes HEAD rādītāju ar indeksa id - 4.Šī ir rādītāja atsauce, kad “preprod” filiāle tika izveidota ar ilgu saistības ID, kas izcelts izejas ekrānuzņēmumā.

git checkout -b preprod HEAD @ {4}

Rezultāts

Un voila! ‘ tālākpārdošana ‘Filiāle tiek atgūta ar visu jūsu pirmkodu.

PIEZĪME : Ļaujiet man baktivizējiet iepriekš izmantoto komandu “git checkout” un palīdziet labāk saprast:

‘Git checkout’ komanda ir pārslogota komanda (tāpat kā jebkura Java pārslogota funkcija). Šī ir tā daļa, kurā tiek atgūta faktiskā filiāle.

Šī vienotā komanda vispirms pārbauda agrāko vēstures laika zīmogu, ko norāda Rādītājs HEAD @ {4} un pēc tam izveido filiāli ar nosaukumu “preprod”, izmantojot opciju “-b”, kā arī pārslēdz darba direktoriju uz jaunizveidoto filiāli.

Tas nozīmē, ka pārslēgtā filiāle būs no “master” uz “preprod”, kā norādīts izejas ekrānā.Tagad jūs to varat apvienot ar ‘master’ vai ‘release’ atzari atbilstoši savam atzarošanas modelim.

Tagad, kad jūs zināt, kā atjaunot filiāli, ļaujiet man pateikt, kāds darbs tiek atjaunots, kad tiek izdzēsts izdzēsts zars.

Kāds darbs tiek atjaunots, kad tiek izdzēsts izdzēstais zars?

Faili, kas tika glabāti un saglabāti atlicināšanas indeksu sarakstā, tiks atgūti atpakaļ. Visi nesekotie faili tiks zaudēti. ES arīTā ir laba ideja vienmēr iestudēt un paveikt savu darbu vai tos atlicināt.

Lai ielādētu konkrēta filiāles vai taga žurnāla atsauces, palaidiet komandu - “git reflog”.

Piemērs: Lai pārbaudītu tikai “uat” filiāles žurnāla atsauces, izmantojiet komandu - “git reflog uat”.

Git Reflog apakškomandas

iet reflog

Komanda, lai atvērtu rokasgrāmatas lapu

$ git reflog - palīdzība

Rezultāts

iet reflog šovs

Parāda komandrindā norādītās atsauces žurnālus.

git reflog šova meistars @ {0}

iet reflog beidzas

Šo komandu izmanto, lai apgrieztu vecākus reflog ierakstus.

derīguma termiņš beidzas

iet reflog dzēst

Šī komanda izdzēš atsevišķus ierakstus no refloga vēstures.

git reflog dzēst

iet reflog pastāv

Šī komanda pārbauda, ​​vai ref (filiālei vai tagam) ir reflog - log vēstures ieraksti.

eksistē git reflog

Papildus iepriekšminētajām komandām komandā “Git Reflog” ir nepieciešamas dažādas apakškomandas un dažādas opcijas atkarībā no iepriekš minētajām apakškomandām. Turpmākai lasīšanai “ git reflog - palīdzība ”No termināla loga.

Ar to mēs esam nonākuši pie šī raksta par Git Reflog.DevOps mērķis ir ātrāk un ar lielāku uzticamību izveidot labākas kvalitātes programmatūru, vienlaikus aicinot lielāku komunikāciju un sadarbību starp komandām. Ja jūs interesē šis raksts, c heck out Autors: Edureka, uzticams tiešsaistes mācību uzņēmums ar vairāk nekā 250 000 apmierinātu izglītojamo tīklu visā pasaulē. Edureka DevOps sertifikācijas apmācības kurss palīdz izglītojamajiem saprast, kas ir DevOps, un iegūt zināšanas dažādos DevOps procesos un rīkos, piemēram, Leļļu, Jenkins, Nagios, Ansible, Chef, Saltstack un GIT, lai automatizētu vairākus SDLC soļus.

Vai mums ir jautājums? Lūdzu, pieminējiet to raksta “Git Reflog” komentāru sadaļā, un mēs sazināsimies ar jums pēc iespējas ātrāk.