Git Reflog - Ako obnoviť odstránenú vetvu, ktorá nebola zlúčená



Tento článok o Git Reflog je komplexný sprievodca obnovením odstránenej vetvy v Gite pomocou Git Reflog.

„Stratili ste niekedy pobočku, ktorej zdrojový kód ešte nebol zlúčený do pobočky‘ release ’alebo‘ main ’? Čo ak chcete obnoviť zmazanú vetvu, hoci jej práca už bola zlúčená do hlavnej vetvy? “ . Jediným riešením takýchto scenárov je Choď Reflog .

Prostredníctvom tohto článku o Git Reflog vám pomôžemrozumiete scenárom, v ktorých by sa mohla stratiť vaša práca na pobočke, a ako obnoviť pobočku.Tento článok tiež zdôrazní prístup, ktorý by ste mohli použiť na zabránenie neúmyselnej strate pobočky pri práci na veľkom projekte.





    1. Čo je Git Reflog?
    2. Ako a kedy sa pobočka vymaže?
    3. Obnovte odstránenú vetvu
    4. Aká práca sa obnoví po obnovení odstránenej vetvy?
    5. Podpríkazy Git Reflog

Začnime teda týmto článkom.



Zvážte scenár, maintainer musí zlúčiť veľa vetiev funkcií od rôznych spolupracovníkov a potom ich nakoniec odstrániť, ale vetva sa omylom odstráni skôr, ako bude možné prácu spojiť?

Predtým, ako prejdem k tomuto článku, poviem vám, že v Gite to nie je možné. sú zabezpečené a fungujú ako kontrolné miesto, ktoré by vám to neumožnili. Takže tu prichádza na rad Git Reflog.

Čo je Git Reflog?

ThePríkaz 'reflog' udržuje a stopa z každú jednu zmenu vykonanú v referenciách (vetvy alebo značky) úložiska a uchováva históriu protokolov pobočiek a značiek, ktoré boli vytvorené lokálne alebo odhlásené. Referenčné protokoly, ako napríklad snímka potvrdenia o tom, kedy bola pobočka vytvorená alebo klonovaná, odhlásená, premenovaná alebo akékoľvek potvrdenia vykonané na pobočke, sú udržiavané a sú uvedené v príkaze „reflog“.



Poznámka: Pobočka bude obnoviteľná z vášho pracovného adresára, iba ak pobočka niekedy existovala v miestnom úložisku, t. pobočka bola vytvorená lokálne alebo odhlásená zo vzdialeného úložiska vo vašom miestnom úložisku, aby mohol Git ukladať svoje protokoly histórie odkazov.

čo je postup v sql

Tento príkaz je potrebné vykonať v úložisku, ktoré malo stratenú vetvu. Ak vezmete do úvahysituácia vzdialeného úložiska, musíte vykonať príkaz reflog na stroji vývojára, ktorý mal pobočku.

príkaz: choď reflog

Teraz, keď viete, čo je Git Reflog, dovoľte námskúste odstrániť zlúčenú aj nespojenú vetvu a uvidíte, ako to zvláda Git?

Krok 1: Zoznam vetiev, ktoré sú zlúčené do hlavnej

Najskôr sa pozrite na stránku „ pán ‘Pobočka, ak ste na inej pobočke pomocou príkazu:

$ git pokladňa, majster

Výkon

Git Checkout Master - Git Reflog - Edureka

Ak chcete získať zoznam zlúčených vetiev, spomeňte nasledujúci príkaz:

$ git pobočka - zlúčená

Výkon:

Krok 1.1: Potom odstráňte zlúčenú vetvu:

$ git branch -d vydanie # 902

Výkon:

Pobočka „vydanie # 902“ bola úspešne odstránená, pretože je už zlúčená do pobočky „master“.

Krok 2: Teraz poďme uviesť zoznam vetiev, ktoré nie sú zlúčené do hlavnej.

$ git branch --no-merged

Výkon

Krok 2.2: Nakoniec odstráňte nezlúčenú vetvu pomocou nasledujúceho príkazu:

$ git branch -d prepod

Ak sa pokúsite odstrániť jednu z vetiev s nedokončenou prácou, povedzte vetvu „preprod“, git zobrazí varovnú správu.

Výkon

Teraz, skôr ako vám poviem, ako môžete obnoviť údaje v tomto článku na Git Reflog, dovoľte mi, aby som vám povedal, čo sa presne stane, keď sa pobočka vymaže a za akých okolností sa dá pobočka obnoviť.

Ako a kedy sa pobočka vymaže?

Ako vieme, Git je Distribuovaný systém riadenia verzií (DVCS), každý stroj s klonom alebo kópiou úložiska funguje ako obidva uzol a a stredisko . Totoznamená, že každý stroj bude mať svoju vlastnú kópiu celého kódu úložiska a histórie.Netreba dodávať, že budete zdieľanie vaša práca s ostatnými a vydavateľstvo rovnaký.

Preto by v takýchto scenároch mohli nastať 3 prípady, keď dôjde k vymazaniu pobočky v scenári reálneho sveta, pričom veľa prispievateľov pracuje na veľkom projekte. Môžu to byť tieto prípady:

Prípad 1 - Vývojár môže pobočku zlúčiť alebo odstrániť

Zvážte scenár, keď vývojár lokálne zlúči vetvu funkcií do hlavnej vetvy a potom vetvu funkcie odstráni pomocou funkcie „ vetva git ‘Príkaz pomocou„ - d ”Príznak, ako je viditeľný na predchádzajúcich snímkach obrazovky.

Príkaz: ‘Git branch -d branch_name’

Môže sa tiež stať, že sa vývojár rozhodne zmazať zmeny vo vetve a rozhodne sa vetvu odstrániť bez toho, aby ju zlúčila s inou vetvou pomocou nasledujúceho príkazu:

Príkaz: ‘Git branch -D branch_name’

Pomocou vyššie uvedeného príkazu je to vývojárnásilne vymažte vetvu, ktorá prepíše varovanie git

$ git branch --D preprod

Výkon

Poznámka : Pobočka „preprod“ už nebude uvedená, keď spustíte príkaz „git branch“. Takže, ynaša práca uložená v tejto pobočke bude stratená.

Prípad 2 - Vývojár vymaže pobočku v zdieľanom úložisku

Zvážte scenár, keď sa vývojár s prístupom na čítanie a zápis pokúsi vzdialene odstrániť vzdialenú vetvu pomocoupomocou príkazu „git push“ s príznakom „–delete“.

$ git push origin - odstrániť rýchlu opravu

Výkon

Okrem toho by mohol nastať aj prípad, keď neautorizovaný alebo zlomyseľný používateľ vynúti stlačenie, aby vymazal vzdialenú vetvu.V takom prípade bude správca schopný obnoviť odstránenú vetvu „rýchlej opravy“, iba ak vývojárpredtým odhlásil túto pobočku. V tomto scenári bude mať jeho miestne úložisko stále referenčné protokoly.

Ak správca nemôže obnoviť pobočku, musí sa vlastník pobočky, ktorý ju odstránil, zotaviť zo svojich miestnych reflogov.

Prípad 3 - Hook script so super privilégiami vymaže vetvu

Môže to byť ojedinelý, ale možný scenár, ktorý sa spustí hákový skript pri určitej udalosti operácie git a sila vymaže vetvy, ktoré ešte nie sú zlúčené. Môžešpovažujte jeden z vyššie uvedených príkazov za skriptovaný v hákovom skripte s oprávneniami sudo.

Teraz, keď viete, čo sa stane, keď odstránite vetvu, pokračujme v tomto článku na Git Reflog a pozrite sa, ako obnoviť stratenú vetvu.

Obnovte odstránenú vetvu pomocou Git Reflog

Krok 1 : Denníky histórie všetkých referencií

Získajte zoznam všetkých miestnych zaznamenaných protokolov histórie všetkých odkazov („master“, „uat“ a „prepod“) v tomto úložisku.

choď reflog

Krok 2 : Identifikujte historickú pečiatku

Ako môžete uviesť z vyššie uvedeného snímku, Zvýraznené ID potvrdenia: e2225bb spolu s indexom ukazovateľa HEAD: 4 je ten, kedy ‘ ďalší predaj ‘Vetva bola vytvorená z aktuálneho ukazovateľa HEAD smerujúceho na vašu najnovšiu prácu.

Krok 3 : Obnoviť

Ak chcete získať späť „Ďalší predaj ‘Vetva použi príkaz„Git checkout“ odovzdávajúci odkaz na ukazovateľ HEAD s indexom id - 4.Toto je odkaz na ukazovateľ, keď bola pobočka „preprod“ vytvorená s ID dlhého potvrdenia zvýrazneným na výstupnej snímke obrazovky.

git checkout -b preprod HEAD @ {4}

Výkon

A voilá! „ ďalší predaj „Vetva je obnovená späť so všetkým vašim zdrojovým kódom.

POZNÁMKA : Dovoľte mi bzoskupte vyššie uvedený príkaz ‘git checkout’ a pomôžte vám lepšie porozumieť:

Príkaz „git checkout“ je preťažený príkaz (rovnako ako každá funkcia preťažená Java). Toto je časť, kde sa obnovuje skutočná vetva.

Tento jediný príkaz sa najskôr zapíše do staršej časovej značky histórie označenej Ukazovateľ HEAD @ {4} a potom pomocou možnosti „-b“ vytvorí vetvu s názvom „preprod“ a prepne váš pracovný adresár na novovytvorenú vetvu.

To znamená, že prepnutá vetva bude z „hlavnej“ do „preprod“, ako je uvedené na výstupnej obrazovke.Teraz by ste ich mohli zlúčiť s vetvou ‘master’ alebo ‘release‘ podľa vášho modelu vetvenia.

Teraz, keď viete, ako obnoviť vetvu, poviem vám, aké práce sa obnovia po obnovení odstránenej vetvy.

Aká práca sa obnoví po obnovení odstránenej vetvy?

Súbory, ktoré boli uložené a uložené v zozname uložených indexov, budú obnovené späť. Všetky nesledované súbory sa stratia. Tiež JaJe dobré vždy inscenovať a odovzdať prácu alebo ich skryť.

Ak chcete načítať referencie protokolu konkrétnej vetvy alebo značky, spustite príkaz - „git reflog“.

Príklad: Ak chcete skontrolovať logovacie referencie samotnej vetvy ‘uat’, použite príkaz - „git reflog uat“.

Podpríkazy Git Reflog

choď reflog

Príkaz na otvorenie manuálnej stránky

$ git reflog - pomoc

Výkon

choď reflog šou

Zobrazuje protokoly referencie uvedenej v príkazovom riadku.

git reflog show master @ {0}

choď reflog vypršať

Tento príkaz sa používa na orezanie starších záznamov reflogu.

git reflog vyprší

choď reflog vymazať

Tento príkaz odstráni jednotlivé položky z histórie reflogu.

git reflog vymazať

choď reflog existuje

čo je tostring v jave

Tento príkaz kontroluje, či má ref (vetva alebo značka) záznamy reflog - log histórie.

git reflog existuje

Okrem vyššie uvedených príkazov má príkaz „Git Reflog“ rôzne čiastkové príkazy a rôzne možnosti v závislosti od vyššie uvedených čiastkových príkazov. Na ďalšie čítanie git reflog –pomoc ”Z okna terminálu.

Týmto prichádzame k ukončeniu tohto článku o Git Reflog.Zámerom spoločnosti DevOps je rýchlejšie a spoľahlivejšie vytvárať kvalitnejší softvér a zároveň vyžadovať lepšiu komunikáciu a spoluprácu medzi tímami. Ak vás tento článok zaujal, c sakra autor: Edureka, dôveryhodná online vzdelávacia spoločnosť so sieťou viac ako 250 000 spokojných študentov rozmiestnených po celom svete. Kurz certifikácie EdOkaka DevOps Certification Training pomáha študentom pochopiť, čo je DevOps, a získať odborné znalosti v rôznych procesoch a nástrojoch DevOps, ako sú Puppet, Jenkins, Nagios, Ansible, Chef, Saltstack a GIT na automatizáciu viacerých krokov v SDLC.

Máte na nás otázku? Uveďte to v sekcii komentárov v článku „Git Reflog“ a my sa vám ozveme čo najskôr.