“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ā.
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
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.