Git Reflog - Jak obnovit odstraněnou větev, která nebyla sloučena

Tento článek o Git Reflogu je komplexním průvodcem, jak pomocí Git Reflogu obnovit odstraněné větve v Gitu.

'Ztratili jste někdy větev, jejíž zdrojový kód ještě nebyl sloučen ve větvi 'release' nebo 'main'? Co když chcete regenerovat odstraněnou větev, i když její práce již byla sloučena do hlavní větve? “ . Jediným řešením takových scénářů je Přejít Reflog .

Prostřednictvím tohoto článku o Git Reflog vám pomůžuporozumět scénářům, ve kterých může dojít ke ztrátě vaší práce na větvi, a jak obnovit větev.Tento článek také zvýrazní přístup, který můžete použít, abyste zabránili nechtěné ztrátě větve při práci ve velkém projektu.



    1. Co je Git Reflog?
    2. Jak a kdy bude pobočka smazána?
    3. Obnovte odstraněnou větev
    4. Jaká práce se obnoví po obnovení odstraněné větve?
    5. Podpříkazy Git Reflog

Pojďme tedy začít s tímto článkem.



Zvažte scénář, maintainer musí sloučit mnoho větví funkcí od různých spolupracovníků a poté je nakonec odstranit, ale větev bude omylem smazána, než bude možné práci sloučit?

Než přejdu k tomuto článku, dovolte mi, abych vám řekl, že v Gitu to není možné. jsou zabezpečené a fungují jako kontrolní příspěvek, který by vám to neumožňoval. Takže tady přichází na scénu Git Reflog.

Co je Git Reflog?

ThePříkaz „reflog“ udržuje a dráha každá změna provedená v referencích (větve nebo značky) úložiště a uchovává historii protokolu větví a značek, které byly vytvořeny místně nebo rezervovány. Referenční protokoly, jako je snímek potvrzení, kdy byla pobočka vytvořena nebo klonována, odhlášena, přejmenována nebo jakékoli závazky provedené ve větvi, jsou udržovány a jsou uvedeny v příkazu „reflog“.



Poznámka: Pobočka bude obnovitelná z vašeho pracovního adresáře pouze v případě, že pobočka někdy existovala ve vašem místním úložišti, tj. pobočka byla buď vytvořena místně, nebo odhlášena ze vzdáleného úložiště ve vašem místním úložišti, aby mohl Git ukládat své protokoly historie odkazů.

co dělá math.abs v Javě

Tento příkaz musí být proveden v úložišti, které mělo ztracenou větev. Pokud vezmete v úvahusituace vzdáleného úložiště, musíte provést příkaz reflog na stroji vývojáře, který měl pobočku.

příkaz: jít reflog

Nyní, když víte, co je Git Reflog, pojďmezkuste odstranit sloučenou i nesloučenou větev a uvidíte, jak to zvládne Git?

Krok 1: Seznam větví, které jsou sloučeny do hlavní

Nejprve se podívejte do mistr „Větev, pokud jste na jiné pobočce pomocí příkazu:

$ git pokladna master

Výstup

Git Checkout Master - Git Reflog - Edureka

Chcete-li získat seznam sloučených větví, uveďte následující příkaz:

$ git větev - sloučeno

Výstup:

Krok 1.1: Poté odstraňte sloučenou větev:

$ git branch -d číslo # 902

Výstup:

Pobočka „číslo 902“ byla úspěšně smazána, protože je již sloučena do větve „hlavní“.

Krok 2: Nyní uveďme seznam větví, které nejsou sloučeny do hlavní.

$ git branch --no-merged

Výstup

Krok 2.2: Nakonec odstraníme nesloučenou větev pomocí následujícího příkazu:

$ git branch -d prepod

Pokud se pokusíte odstranit jednu z větví s nedokončenou prací, řekněte „preprod“ větev, git zobrazí varovnou zprávu.

Výstup

Teď, než vám řeknu, jak můžete obnovit data v tomto článku na Git Reflogu, řeknu vám, co přesně se stane, když dojde ke smazání větve a za jakých okolností ji lze obnovit.

Jak a kdy bude pobočka smazána?

Jak víme, že Git je Systém řízení distribuované verze (DVCS), každý stroj s klonem nebo kopií úložiště funguje jako oba uzel a a rozbočovač . Tentoznamená, že každý stroj bude mít vlastní kopii celého kódu úložiště a historie.Není třeba říkat, že budete sdílení svou práci s ostatními a vydavatelství stejný.

Proto by v takových scénářích mohly nastat 3 případy, kdy dojde k odstranění větve ve scénáři reálného světa s mnoha přispěvateli pracujícími na velkém projektu. Mohou to být tyto případy:

Případ 1 - Vývojář může větev sloučit nebo odstranit

Zvažte scénář, kdy vývojář lokálně sloučí větev funkcí do hlavní větve a poté větev funkcí odstraní pomocí ‚ git větev „Příkaz s„ - d „Příznak, jak je vidět na předchozích snímcích obrazovky.

Příkaz: „Git branch -d branch_name“

Může se také stát, že se vývojář rozhodne vyhodit změny ve větvi do koše a rozhodne se větev odstranit bez sloučení s jakoukoli jinou větví pomocí následujícího příkazu:

Příkaz: „Git branch -D branch_name“

S výše uvedeným příkazem je vývojářvynuceně odstranit větev přepsající varování git

$ git větev -D preprod

Výstup

Poznámka : Pobočka „preprod“ již nebude uvedena, když spustíte příkaz „git branch“. Takže, ynaše práce uložená v této větvi bude ztracena.

Případ 2 - Vývojář odstraní větev ve sdíleném úložišti

Zvažte scénář, kdy se vývojář s přístupem pro čtení a zápis pokusí násilně odstranit vzdálenou větevpomocí příkazu „git push“ s příznakem „–delete“.

$ git push origin - odstranit rychlou opravu

Výstup

Kromě toho může nastat také případ, kdy neautorizovaný nebo škodlivý uživatel vynutí tlak na odstranění vzdálené větve.V takovém případě bude správce schopen obnovit odstraněnou větev „rychlé opravy“ pouze v případě, že vývojářpředtím rezervoval tuto větev. V tomto scénáři bude mít jeho místní úložiště stále referenční protokoly.

Pokud správce nemůže větev obnovit, musí se vlastník pobočky, který ji odstranil, zotavit ze svých místních reflogů.

Případ 3 - Hákový skript se super oprávněními vymaže větev

Mohlo by to být vzácné, ale možný scénář, který se aktivuje hákový skript při určité události operace git a vynutí odstranění větví, které ještě nejsou sloučeny. Můžešzvažte, že jeden z výše uvedených příkazů je skriptován v hákovém skriptu s oprávněními sudo.

Nyní, když víte, co se stane, když odstraníte větev, pokračujte v tomto článku o Git Reflog a podívejte se, jak obnovit ztracenou větev.

Obnovte odstraněnou větev pomocí Git Reflog

Krok 1 : Protokoly historie všech odkazů

Získejte seznam všech místních zaznamenaných protokolů historie všech odkazů („master“, „uat“ a „prepod“) v tomto úložišti.

jít reflog

Krok 2 : Určete razítko historie

Jak můžete zjistit z výše uvedeného snímku, Zvýrazněné ID potvrzení: e2225bb spolu s indexem ukazatele HEAD: 4 je ten, kdy „ další prodej „Pobočka byla vytvořena z aktuálního ukazatele HEAD ukazujícího na vaši nejnovější práci.

Krok 3 : Zotavit se

Chcete-li obnovit zpět „Další prodej „Větev použijte příkaz„Git checkout“ předávající odkaz na HEAD ukazatel s indexem id - 4.Toto je odkaz na ukazatel, když byla vytvořena větev „preprod“ s dlouhým ID potvrzení zvýrazněným na výstupním snímku obrazovky.

git checkout -b preprod HEAD @ {4}

Výstup

A voila! „ další prodej „Větev je obnovena zpět se všemi zdrojovými kódy.

POZNÁMKA : Dovolte mi bseskupte výše uvedený příkaz „git checkout“ a pomůže vám to lépe porozumět:

Příkaz „git checkout“ je přetížený příkaz (stejně jako každá funkce Java přetížená). Toto je část, kde je obnovena skutečná větev.

Tento jediný příkaz nejprve zkontroluje dřívější časové razítko historie, na které ukazuje HEAD @ {4} ukazatel a poté pomocí možnosti „-b“ vytvoří větev s názvem „preprod“ a přepne váš pracovní adresář na nově vytvořenou větev.

To znamená, že přepnutá větev bude z „hlavní“ na „preprod“, jak je uvedeno na výstupní obrazovce.Nyní byste jej mohli sloučit s větví ‚master 'nebo‚ release' podle vašeho modelu větvení.

Nyní, když víte, jak obnovit větev, řeknu vám, jaké práce se obnoví, když se obnoví odstraněná větev.

Jaká práce se obnoví po obnovení odstraněné větve?

Soubory, které byly skryty a uloženy do seznamu ukrytých indexů, budou obnoveny zpět. Všechny nesledované soubory budou ztraceny. Také jáJe dobrý nápad vždy inscenovat a odevzdat svou práci nebo je schovat.

Chcete-li načíst odkazy na protokoly konkrétní větve nebo značky, spusťte příkaz - „git reflog“.

Příklad: Chcete-li zkontrolovat logovací odkazy samotné větve „uat“, použijte příkaz - „git reflog uat“.

Podpříkazy Git Reflog

jít reflog

Příkaz k otevření ruční stránky

$ git reflog - nápověda

Výstup

jít reflog ukázat

Zobrazuje protokoly odkazu uvedeného v příkazovém řádku.

git reflog show master @ {0}

jít reflog vyprší

Tento příkaz se používá k ořezávání starších záznamů reflogu.

git reflog vyprší

jít reflog vymazat

Tento příkaz odstraní jednotlivé položky z historie reflogu.

git reflog smazat

jít reflog existuje

Výukový program pro SQL Server pro začátečníky

Tento příkaz kontroluje, zda ref (větev nebo tag) má reflog - záznamy historie protokolu.

git reflog existuje

Kromě výše zmíněných příkazů má příkaz „Git Reflog“ různé dílčí příkazy a různé možnosti v závislosti na výše uvedených dílčích příkazech. Pro další čtení běh “ git reflog - pomoc “Z okna terminálu.

Tímto ukončujeme tento článek o Git Reflog.Záměrem společnosti DevOps je rychlejší a spolehlivější vytváření kvalitnějšího softwaru a zároveň lepší komunikace a spolupráce mezi týmy. Pokud vás tento článek zaujal, c sakra Edureka, důvěryhodná online vzdělávací společnost se sítí více než 250 000 spokojených studentů rozložených po celém světě. Kurz Certifikace Edureka DevOps pomáhá studentům pochopit, co je DevOps, a získat odborné znalosti v různých procesech a nástrojích DevOps, jako jsou Puppet, Jenkins, Nagios, Ansible, Chef, Saltstack a GIT pro automatizaci více kroků v SDLC.

Máte na nás dotaz? Uveďte to prosím v sekci komentářů v článku „Git Reflog“ a my se vám co nejdříve ozveme.