Git Reflog - kuidas taastada kustutatud haru, mida ei ühendatud



See Git Reflogi artikkel on põhjalik juhend Git Reflogi abil kustutatud hargnenud filmi taastamiseks Gitis.

'Kas olete kunagi kaotanud filiaali, mille lähtekood ei olnud veel ühendatud filiaali' vabastamine 'või' peamine 'haruga? Mis juhtub, kui soovite kustutatud haru taastada, kuigi selle töö on juba ühendatud peaharuga? ' . Noh, ainus lahendus sellistele stsenaariumitele on Mine Reflogisse .

Selle Git Reflogi artikli kaudu aitan teidmõista stsenaariume, kus teie töö filiaalis võib kaduda ja kuidas haru taastada.Samuti toob see artikkel välja lähenemisviisi, mida võiksite kasutada, et vältida filiaali tahtmatut kaotamist suures projektis töötades.





    1. Mis on Git Reflog?
    2. Kuidas ja millal filiaal kustutatakse?
    3. Kustutatud haru taastamine
    4. Mis töö taastatakse, kui kustutatud haru taastatakse?
    5. Git Reflog alamkäsud

Alustame selle artikliga.



Vaatleme stsenaariumi, maintainer peab ühendama paljud funktsiooniharud erinevatelt kaastöötajatelt ja need siis lõpuks kustutama, kuid haru kustutatakse kogemata, enne kui saaks töö ühendada?

Noh, enne kui selle artikli kallale asun, lubage mul teile öelda, et see pole Gitis võimalik. on turvalised ja tegutsevad kontrollpostina, ei võimaldaks teil seda teha. Nii tuleb Git Reflog pildile.

Mis on Git Reflog?

The‘Reflog’ käsk hoiab a jälg iga viide tehtud muudatus (oksad või sildid) hoidlas ja hoiab kas kohalikult loodud või välja registreeritud harude ja siltide logiajalugu. Selliseid viitelogisid nagu filiaali loomise või kloonimise, registreerimise, ümbernimetamise või harul tehtud mis tahes toimingu tegemise hetktõmmist haldab ja on loetletud käsuga ‘reflog’.



Märge: Haru saab teie töökataloogist taastada ainult siis, kui haru on kunagi teie kohalikus hoidlas olnud, s.t. haru loodi kas kohapeal või registreeriti Giti jaoks teie kohaliku repositooriumi kaughoidlast, et see saaks oma viiteajaloo logisid salvestada.

See käsk tuleb täita hoidlas, millel oli kadunud haru. Kui kaalutekaughoidla olukord, siis peate täitma reflog-käsu arendaja masinal, kellel oli haru.

käsk: mine reflog

Nüüd, kui teate, mis on Git Reflog, andke meile teadaproovige kustutada nii ühendatud kui ka ühendamata haru ja vaadake, kuidas Git sellega hakkama saab?

1. samm: loetlege harud, mis on ühendatud põhihalduriga

Kõigepealt vaadake meister ’Haru, kui olete mõnes muus harus, kasutades käsku:

kassas $ git master

Väljund

Git Checkout Master - Git Reflog - Edureka

Ühendatud harude loendi saamiseks mainige järgmist käsku:

on java massiivi objekt
$ git filiaal - ühendatud

Väljund:

Samm 1.1: Seejärel kustutage ühendatud haru:

$ git filiaal -d väljaanne # 902

Väljund:

Haru ‘issue # 902’ kustutati edukalt, kuna see on juba liidetud haruks ‘master’.

2. samm: loetlege nüüd harud, mis pole masteriks ühendatud.

filiaal $ git - pole ühendatud

Väljund

Samm 2.2: Lõpuks kustutame ühendamata haru järgmise käsuga:

$ git filiaal -d prepod

Kui proovite kustutada mõnda haru lõpetamata tööga, öelge haru 'preprod', kuvab git hoiatusteate.

Väljund

Enne kui ma ütlen teile, kuidas saate selles artiklis Git Reflogis olevaid andmeid taastada, lubage mul öelda, mis täpselt juhtub, kui haru kustutatakse ja millistel tingimustel saab haru taastada.

Kuidas ja millal filiaal kustutatakse?

Kuna teame, et Git on a Hajutatud versioonikontrolli süsteem (DVCS), kõik klooniga masinad või hoidla koopiad toimivad mõlemana sõlm ja a rummu . Seetähendab, et igal masinal on kogu hoidla kood ja ajalugu oma koopia.Ütlematagi selge, et saate jagamine oma tööd teistega ja kirjastamine sama.

Seega võib selliste stsenaariumide korral olla 3 juhtumit, kui filiaal kustutatakse reaalses stsenaariumis, kus paljud kaasautorid töötavad suure projekti kallal. Juhtumid võivad olla järgmised:

1. juhtum - arendaja saab haru ühendada või kustutada

Vaatleme stsenaariumi, kus arendaja ühendab funktsiooniharu kohalikult peaharuga ja kustutab seejärel funktsiooniharu, kasutades ‘ git haru ’Käsk„ - d ”Lipp, nagu on näha varasematel ekraanipiltidel.

Käsk: ‘Git branch -d filiaali_nimi’

Samuti võib juhtuda, et arendaja otsustab harus tehtud muudatused prügikasti visata ja otsustab haru kustutada, ühendamata seda mõne muu haruga, kasutades järgmist käsku:

Käsk: ‘Git filiaal -D filiaali_nimi’

Ülaltoodud käsu korral on arendajakustutage jõuliselt haru, mis tühistab hoiatuse

$ git filiaal -D preprod

Väljund

Märge : Käsku „git branch” käivitades ei loeta haru ‘preprod’ enam loendisse. Sojakastemeie sellel oksal salvestatud tööd lähevad kaotsi.

2. juhtum - arendaja kustutab haru jagatud hoidlas

Mõelge stsenaariumile, kus lugemis- / kirjutusjuurdepääsuga arendaja proovib kaugharu jõuliselt kustutadakasutades käsku „git push” koos lipuga – –delete.

$ git push origin - kustuta kiirparandus

Väljund

Peale selle võib esineda ka juhtum, kus volitamata või pahatahtlik kasutaja sunnib kaugharu kustutama.Sellisel juhul saab hooldaja kustutatud „kiirparanduste” haru taastada ainult siis, kui arendaja seda teeboli selle filiaali varem üle vaadanud. Selle stsenaariumi korral on selle kohalikul hoidlal selle viitenumbrid.

Kui hooldaja ei saa filiaali taastada, peab filiaali omanik, kes selle kustutas, oma kohalikest reflogidest taastuma.

3. juhtum - superõigustega konksukript kustutab haru

See võib olla haruldane, kuid võimalik stsenaarium, et konksskript käivitatakse teatud git-operatsiooni sündmusel ja jõud kustutab oksad, mis pole veel ühendatud. Sa saadkaaluge ühte ülalnimetatud käskudest sudoõigustega konksskriptis.

Nüüd, kui teate, mis juhtub, liikuge haru kustutades selle artikliga Git Reflogis edasi ja vaadake, kuidas kaotatud haru taastada.

Kustutatud haru taastamine Git Reflogi abil

Samm 1 : Kõigi viidete ajaloo logid

Hankige kõigi selles hoidlas olevate viidete (‘master’, ‘uat’ ja ‘prepod’) kohalike salvestatud ajaloo logide loend.

mine reflog

2. samm : Tuvastage ajalootempel

Nagu ülaltoodud hetkepildist võite viidata, Esiletõstetud kohustuse ID: e2225bb koos HEAD-kursori indeksiga: 4 on see, kui edasi müüa ’Haru loodi praegusest HEAD-kursorist, mis osutab teie viimasele tööle.

3. samm : Taasta

Et tagasi saada ‘Edasimüük ‘Haru kasuta käsku‘Git checkout’, mis viib HEAD-kursori viite indeksiga ID - 4.See on kursori viide, kui 'preprod' haru loodi väljundipildil esile tõstetud pika pühendamise ID-ga.

git checkout -b preprod HEAD @ {4}

Väljund

Ja voila! ' edasi müüa ‘Haru taastatakse kogu teie lähtekoodiga.

MÄRGE : Las ma btaaskäivitage ülaltoodud käsk ‘git checkout’ ja aitab teil paremini mõista:

‘Git checkout’ käsk on ülekoormatud käsk (täpselt nagu iga Java ülekoormatud funktsioon). See on osa, kus tegelik haru taastatakse.

See üks käsk kontrollib kõigepealt varasema ajaloo ajatemplit, mille on osutanud Kursor HEAD @ {4} ja loob seejärel filiaali nimega ‘preprod’, kasutades valikut „-b“, ning lülitab teie töökataloogi vastloodud harule.

See tähendab, et lülitatav haru on „masterilt” „preprodile”, nagu väljundiekraanil näidatud.Nüüd saate selle oma haruneva mudeli järgi ühendada haruga ‘master’ või ‘release’.

Nüüd, kui teate, kuidas haru taastada, lubage mul öelda, mis tööd taastatakse kustutatud haru taastamisel.

Mis töö taastatakse, kui kustutatud haru taastatakse?

Varjatud failid, mis on salvestatud ja mis on salvestatud kataloogi registriloendisse, taastatakse. Kõik jälgimata failid lähevad kaotsi. Samuti mat on hea mõte oma tööd alati lavastada ja pühendada või neid kinni hoida.

Konkreetse haru või sildi logiviidete toomiseks käivitage käsk „git reflog”.

Näide: Ainult ‘uat’ haru logiviidete kontrollimiseks kasutage käsku - „git reflog uat“.

Git Reflog alamkäsud

mine reflog

Käsulehe avamiseks käsk

$ git reflog - abi

Väljund

mine reflog saade

Näitab käsureal toodud viite logisid.

git reflog show master @ {0}

mine reflog aeguma

Seda käsku kasutatakse vanemate reflog-kirjete kärpimiseks.

git reflog aegub

mine reflog kustuta

See käsk kustutab üksikud kirjed reflogi ajaloost.

git reflog kustutada

mine reflog olemas

See käsk kontrollib, kas ref (oksal või sildil) on reflog - logi ajaloo kirjed.

git reflog on olemas

Peale ülalnimetatud käskude võtab käsk „Git Reflog” erinevaid alamkäsusid ja erinevaid võimalusi, sõltuvalt ülalnimetatud alamkäsudest. Edasise lugemise jaoks git reflog - abi ”Terminaliaknast.

Sellega jõuame Git Reflogi selle artikli lõpuni.DevOpsi eesmärk on luua kvaliteetsem tarkvara kiiremini ja usaldusväärsemalt, kutsudes meeskondade vahelist suuremat suhtlust ja koostööd. Kui see artikkel teid huvitab, c kurat välja Edureka, usaldusväärne veebiõppeettevõte, mille võrgustik hõlmab üle 250 000 rahuloleva õppija, levinud üle kogu maailma. Edureka DevOpsi sertifitseerimiskoolitus aitab õppijatel aru saada, mis on DevOps, ning omandada teadmisi mitmesuguste DevOpsi protsesside ja tööriistade kohta, nagu Puppet, Jenkins, Nagios, Ansible, Chef, Saltstack ja GIT SDLC mitmete sammude automatiseerimiseks.

Kas teil on meile küsimus? Palun mainige seda artikli „Git Reflog” kommentaaride jaotises ja võtame teiega kohe ühendust.