Git Reflog - Hogyan lehet helyreállítani egy nem törölt ágat



Ez a cikk a Git Reflogról átfogó útmutató arról, hogyan állíthatja vissza a törölt elágazást a Gitben a Git Reflog segítségével.

„Elvesztettél már egy fiókot, amelynek forráskódja még nem volt egyesítve a„ kiadás ”vagy a„ fő ”ágban? Mi van, ha egy törölt ágat szeretne újrateremteni, bár annak munkáját már beolvasztották a fő ágba? ' . Nos, az egyetlen megoldás az ilyen forgatókönyvekre az Menj Reflog .

A Git Reflog e cikkével segítekismerje meg azokat a forgatókönyveket, amelyekben elveszhet egy ágon végzett munkája, és hogyan lehet helyreállítani az ágat.Ez a cikk kiemeli azt a megközelítést is, amelyet megtehet, hogy megakadályozza a fióktelep nem kívánt elvesztését egy nagy projekt során végzett munka során.





    1. Mi az a Git Reflog?
    2. Hogyan és mikor törölnek egy fiókot?
    3. Helyezze vissza a törölt fiókot
    4. Milyen munka áll helyre a törölt ág helyreállításakor?
    5. Git Reflog alparancsok

Tehát kezdjük el ezt a cikket.



Vegyünk egy forgatókönyvet, egy mAz aintainer-nek össze kell egyesítenie számos funkcióágat különféle munkatársaktól, majd végül törölnie kell őket, de az ágat véletlenül törlik, mielőtt a mű összevonható lenne?

Nos, mielőtt továbblépnék erre a cikkre, hadd mondjam el, hogy ez nem lehetséges a Gitben. biztonságban vannak, és ellenőrző állomásként működnek, nem engedné meg. Tehát itt jön a képbe a Git Reflog.

Mi az a Git Reflog?

Az’Reflog’ parancs tartja a pályája a hivatkozásokban végrehajtott minden egyes változás (ágak vagy címkék) egy adattárban, és naplózza az ágak és címkék naplózási előzményeit, amelyeket vagy helyben hoztak létre, vagy pedig ellenőriztek. A referencia naplókat, például az ág létrehozásának vagy klónozásának, kijelentkezésének, átnevezésének vagy az ágon végzett bármilyen elkötelezettség pillanatképét az és a ’reflog’ parancs felsorolja.



Jegyzet: Az ág csak akkor állítható helyre a munkakönyvtárból, ha az ág létezett valaha a helyi adattárban, azaz az ágat vagy helyben hozták létre, vagy egy távoli adattárból a helyi adattárban regisztrálták a Git számára a referenciaelőzmények naplóinak tárolására.

Ezt a parancsot abban a lerakatban kell végrehajtani, amelyben az elveszett ág van. Ha figyelembe vesszük atávoli adattár helyzet, akkor végre kell hajtani a reflog parancsot a fejlesztő gépén, akinek volt ága.

parancs: megy reflog

Most, hogy tudja, mi az a Git Reflog, hadd tudassa velünkpróbáld meg törölni az egyesített és az egyesítetlen ágakat, és nézd meg, hogyan kezeli ezt a Git?

1. lépés: Sorolja fel a masterbe egyesített ágakat

Először nézze meg a fő- ’Ág, ha valamilyen más ágon tartózkodik a következő paranccsal:

$ git checkout master

Kimenet

Git Checkout Master - Git Reflog - Edureka

Az egyesített ágak listájának megadásához említse meg a következő parancsot:

$ git ág - egyesült

Kimenet:

1.1 lépés: Ezután törölje az egyesített ágat:

$ git branch -d 902. számú kiadás

Kimenet:

A „902-es kiadás” fiókot sikeresen törölték, mivel már beolvadt a „fő” ágba.

2. lépés: Most soroljuk fel azokat az ágakat, amelyek nincsenek beolvasztva a masterbe.

$ git ág - nincs összevonva

Kimenet

2.2. Lépés: Végül töröljünk egy egyesítetlen ágat a következő paranccsal:

$ git ág -d prepod

Ha megpróbálja törölni az egyik ágat befejezetlen munkával, mondja ki az „preprod” ágat, a git figyelmeztető üzenetet jelenít meg.

Kimenet

Mielőtt elmondanám, hogyan lehet helyreállítani az ebben a cikkben szereplő adatokat a Git Reflog webhelyen, hadd mondjam el, mi történik pontosan, ha egy fiókot törölnek, és milyen körülmények között lehet helyreállítani a fiókot.

Hogyan és mikor törölnek egy fiókot?

Mint tudjuk, hogy Git a Elosztott verziókezelő rendszer (DVCS), minden klón vagy a tárház másolatát tartalmazó gép egyaránt működik csomópont és a kerékagy . Ezazt jelenti, hogy minden gépnek meg lesz a saját példánya a teljes adattár kódról és előzményekről.Mondanom sem kell, hogy az leszel megosztása a másokkal végzett munkád és kiadás ugyanaz.

Ennélfogva ilyen esetekben három olyan eset fordulhat elő, amikor egy fiókot egy valós forgatókönyvben törlik, és sok közreműködő dolgozik egy nagy projekten. A következő esetek lehetnek:

1. eset - A fejlesztő egyesítheti vagy törölheti az ágat

Vizsgáljunk meg egy olyan forgatókönyvet, ahol egy fejlesztő a funkcióágat a fő ágba egyesíti lokálisan, majd törli a jellemző ágat a ‘ git ág ’Parancsot a„ - d ”Jelző a korábbi képernyőképeken látható módon.

Parancs: ’Git branch -d branch_name’

Előfordulhat az is, hogy a fejlesztő úgy dönt, hogy szemetesbe helyezi a fiók módosításait, és úgy dönt, hogy törli az ágat anélkül, hogy egyesítené azt más ágakkal a következő paranccsal:

Parancs: ’Git branch -D branch_name’

mi a különbség a hashmap és a hashtable között

A fenti paranccsal a fejlesztőerőszakosan törölje az ágat, felülírva a git figyelmeztetést

$ git ág -D preprod

Kimenet

jegyzet : A „preprod” ág már nem szerepel a „git branch” parancs futtatásakor. Szójaezen az ágon mentett munkánk elvész.

2. eset - A fejlesztő töröl egy fiókot egy megosztott adattárból

Vegyünk egy forgatókönyvet, amikor egy olvasási / írási hozzáféréssel rendelkező fejlesztő erőteljesen megpróbálja törölni a távoli ágata „git push” parancs használatával a „–delete” zászlóval.

$ git push origó - gyorsjavítás törlése

Kimenet

Ettől eltekintve előfordulhat olyan eset is, amikor egy engedély nélküli vagy rosszindulatú felhasználó a távoli fiók törlésére kényszerít egy lökést.Ebben az esetben a fenntartó csak akkor tudja helyreállítani a törölt „gyorsjavítás” ágat, ha a fejlesztőkorábban megnézte ezt a fiókot. Ebben a forgatókönyvben a helyi adattár továbbra is rendelkezik referencia naplókkal.

Ha a fenntartó nem tudja visszaszerezni a fiókot, akkor a fiók törlésének a tulajdonosának helyre kell állítania a helyi reflogjait.

3. eset - Hook szkript szuper jogosultságokkal törli az ágat

Ez ritka lehet, de lehetséges forgatókönyv, hogy egy hook szkript elindul bizonyos git műveleti eseményeknél, és az erő törli azokat az ágakat, amelyek még nincsenek egyesítve. tudszvegye fontolóra a fent említett parancsok egyikét sudo privilégiumokkal rendelkező hook szkriptben.

Most, hogy tudod, mi történik, az ág törlésekor lépjünk tovább a Git Reflog cikkel, és nézzük meg, hogyan lehet helyreállítani az elveszett fiókot.

Helyezze vissza a törölt ágakat a Git Reflog használatával

1. lépés : Az összes hivatkozás előzménynaplói

Szerezzen be egy listát az összes helyi rögzített előzménynaplóból, amely tartalmazza az ebben az adattárban található összes hivatkozást („master”, „uat” és „prepod”).

megy reflog

2. lépés : Azonosítsa az előzmények bélyegzőjét

Amint a fenti pillanatképből hivatkozhat, a Kiemelt kötelezettség id: e2225bb a HEAD mutató mutatóval együtt: 4 az az, amikor ’ újra eladta ’Ága az aktuális HEAD mutatóból jött létre, amely a legújabb munkádra mutat.

3. lépés : Visszaszerez

Visszaszerezni a 'Viszonteladás ’Elágazás használja a parancsotA „git checkout” átadja a HEAD mutató hivatkozást az index id - 4 indexszel.Ez a mutató hivatkozás, amikor az „preprod” ág létrejött a kimeneti képernyőképen kiemelt hosszú lekötési azonosítóval.

git checkout -b preprod HEAD @ {4}

Kimenet

És voila! „ viszonteladás ’Az ágat az összes forráskóddal visszaállítják.

JEGYZET : Hadd breagáljon a fent használt ‘git checkout’ paranccsal, és segít jobban megérteni:

A ‘git checkout’ parancs egy túlterhelt parancs (Csakúgy, mint minden Java túlterhelt funkció). Ez az a rész, ahol a tényleges elágazás helyreáll.

Ez az egyetlen parancs először ellenőrzi a korábbi előzmények időbélyegzőjét, amelyet a HEAD @ {4} mutató majd létrehoz egy „preprod” nevű elágazást a „-b” opcióval, valamint átkapcsolja munkakönyvtárát az újonnan létrehozott ágra.

Ez azt jelenti, hogy a váltott elágazás „master” -ről „preprod” -ra vált, amint az a kimeneti képernyőn látható.Most egyesítheti a „master” vagy a „release” ággal az elágazási modellje szerint.

Most, hogy tudja, hogyan lehet visszaállítani egy fiókot, hadd mondjam el, hogy milyen munka áll helyre a törölt ág helyreállításakor.

Milyen munka áll helyre a törölt ág helyreállításakor?

Az elrejtett és a tárolási index-listába mentett fájlokat visszaállítja. A nem követett fájlok elvesznek. Én isEz egy jó ötlet, hogy mindig színpadra állítsa és elkötelezze magát, vagy elrejtse őket.

Egy adott ág vagy címke napló referenciáinak lekéréséhez futtassa a „git reflog” parancsot.

Példa: Az „uat” ág napló referenciáinak ellenőrzéséhez használja a „git reflog uat” parancsot.

Git Reflog alparancsok

megy reflog

Parancs a kézi oldal megnyitásához

$ git reflog --segítség

Kimenet

megy reflog előadás

Megmutatja a parancssorban megadott hivatkozás naplóit.

git reflog show master @ {0}

megy reflog lejár

Ez a parancs a régebbi reflog bejegyzések metszésére szolgál.

git reflog lejár

megy reflog töröl

Ez a parancs töröl egyetlen bejegyzést a reflog előzményekből.

git reflog törlés

megy reflog létezik

c ++ - ban

Ez a parancs ellenőrzi, hogy a ref (ág vagy címke) tartalmaz-e reflog - napló előzmény bejegyzéseket.

git reflog létezik

A fent említett parancsokon kívül a „Git Reflog” parancs különféle alparancsokat és a fent említett alparancsoktól függően különböző lehetőségeket igényel. További olvasási futtatáshoz git reflog –segítség ”A terminál ablakából.

Ezzel véget értünk a Git Reflog cikkén.A DevOps célja jobb minőségű szoftverek gyorsabb és megbízhatóbb létrehozása, miközben nagyobb kommunikációt és együttműködést hív meg a csapatok között. Ha érdekli ez a cikk, c a fenébe az Edureka, egy megbízható online tanulási vállalat, amelynek több mint 250 000 elégedett tanulóval rendelkező hálózata elterjedt az egész világon. Az Edureka DevOps tanúsító tanfolyam segít a tanulóknak megérteni, mi a DevOps, és szert kell szerezni a különféle DevOps folyamatok és eszközök, például a Báb, a Jenkins, a Nagios, az Ansible, a Chef, a Saltstack és a GIT számára az SDLC több lépésének automatizálásához.

Van egy kérdésünk? Kérjük, említse meg a „Git Reflog” cikk megjegyzés rovatában, és mi ASAP-tal fogunk kapcsolatba lépni Önnel.