Git- ja GitHub-ammattilaisen työnkulku · Oppitunti

Git Reflog ja historian palauttaminen

Ottakaa `git reflog` haltuun kadonneiden commitien tai haarojen palauttamista varten ja varmistakaa työskentelynne palautusmahdollisuus.

Oppitunti 1/411 vaihetta

Git Reflog ja historian palauttaminen on ilmainen Git- ja GitHub-ammattilaisen työnkulku-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Git- ja GitHub-ammattilaisen työnkulku-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Git- ja GitHub-ammattilaisen työnkulku-kurssilla on yhteensä 4 oppituntia.

Mikä on Git Reflog?

Poistitko vahingossa haaran tai teitkö resetin väärään commitiin? Älä hätäänny! Gitissä on tehokas turvaverkko nimeltä Reflog.

Reflog eli viiteloki tallentaa tiedot siitä, missä HEAD ja haarojen osoittimet ovat olleet paikallisessa repositoriossasi.

Miten Reflog seuraa historiaa

Commit-historia (git log) seuraa projektitiedostoihin tehtyjä muutoksia, mutta reflog seuraa repositoriosi viitteisiin tehtyjä muutoksia.

Aina kun HEAD eli nykyinen commitisi tai haaran osoitin siirtyy, Git tallentaa tapahtuman reflogiin. Näitä tapahtumia ovat muun muassa:

  • Muutosten commitoiminen
  • Haarojen vaihtaminen
  • Yhdistäminen tai rebase-toiminnon suorittaminen
  • Resetin suorittaminen
  • Repositorion kloonaaminen

Reflogin tarkasteleminen

Voit tarkastella reflogia käyttämällä git reflog -komentoa. Se näyttää luettelon toiminnoista ja HEAD-osoittimen tilan kullakin hetkellä.

Simuloidaan ensin muutamia toimintoja ja tarkastellaan sitten reflogia:

git init my_repo
cd my_repo

echo "First line" > file.txt
git add file.txt
git commit -m "Initial commit"

echo "Second line" >> file.txt
git add file.txt
git commit -m "Add second line"

git reflog

Reflog-merkintöjen tulkitseminen

Jokaisella reflog-merkinnällä on tietty muoto. Puretaan seuraavaksi tyypillinen merkintä:

a1b2c3d HEAD@{0}: commit: Add new feature

  • a1b2c3d: Sen commitin SHA-1-tiiviste, jossa HEAD oli kyseisellä hetkellä.
  • HEAD@{0}: Tämä on ”reflog-merkinnän osoitin”. @{0} tarkoittaa uusinta tilaa, @{1} sitä edeltävää tilaa ja niin edelleen.
  • commit: Add new feature: Kuvaus toiminnosta, joka sai HEAD-osoittimen siirtymään.

Nämä osoittimet ovat erittäin tärkeitä tietojen palauttamisessa!

Esimerkki: kadonneen commitin palauttaminen

Kuvitellaan, että teit commitin ja kumosit sen sitten vahingossa komennolla git reset --soft HEAD~1. Commit ei enää näy nykyisen haarasi historiassa, mutta se ei ole oikeasti kadonnut!

Reflog muistaa sen. Simuloidaan tämä yleinen virhe:

git init my_project_recovery
cd my_project_recovery

echo "Initial content" > start.txt
git add start.txt
git commit -m "Initial commit"

echo "Important feature" > feature.txt
git add feature.txt
git commit -m "Added an important feature"

# Oops! Accidentally reset
git reset --soft HEAD~1

git reflog

Commitin palauttaminen

Jos suoritat resetin jälkeen komennon git reflog, näet ”Added an important feature” -commitia vastaavan merkinnän, mahdollisesti muodossa HEAD@{1} tai vastaavana.

Voit palauttaa commitin käyttämällä git reset -komentoa yhdessä reflog-merkinnän kanssa. Jos kadonneen commitin tiiviste oli esimerkiksi abcdefg tai sen reflog-merkintä oli HEAD@{1}:

# Assuming the lost commit was HEAD@{1} in the reflog
git reset --hard HEAD@{1}

# Or using the specific commit hash from reflog
# git reset --hard abcdefg

# Now, check your log. The commit is back!
git log --oneline

Esimerkki: poistetun haaran palauttaminen

Mitä jos poistit vahingossa kokonaisen haaran ennen sen yhdistämistä tai ajattelit, ettet enää tarvitse sitä?

Haarat ovat vain committeihin osoittavia viitteitä. Kun poistat haaran, sen osoittamat commitit eivät poistu repositoriosta heti. Reflog muistaa edelleen, missä kyseisen haaran HEAD oli!

Haaran palauttaminen reflogista

Oletetaan, että sinulla oli feature-x-niminen haara, työskentelit siinä ja poistit sen sitten komennolla git branch -D feature-x.

Kun suoritat komennon git reflog, saatat nähdä esimerkiksi tällaisen merkinnän:

1234567 HEAD@{5}: branch: Created branch feature-x tai
abcdefg HEAD@{2}: checkout: moving from feature-x to master

Voit luoda haaran uudelleen käyttämällä reflog-merkinnästä saatua commit-tiivistettä, kuten 1234567 tai abcdefg, jossa haara oli aktiivinen:

# Assume 'feature-x' was deleted and its last commit was '1234567'

# Create a new branch pointing to that commit
git branch feature-x-recovered 1234567

# Now, check out your recovered branch
git checkout feature-x-recovered

# Verify its history
git log --oneline

Reflog-merkinnät vanhenevat

Vaikka reflog on tehokas turvaverkko, sen merkinnät eivät säily ikuisesti. Git poistaa vanhoja reflog-merkintöjä tietyn ajan kuluttua.

  • Oletusarvoisesti saavutettavissa olevat merkinnät eli nykyisestä HEAD-osoittimesta saavutettavat merkinnät vanhenevat 90 päivän kuluttua.
  • Saavuttamattomissa olevat merkinnät, kuten poistetuista haaroista peräisin olevat tai enää mihinkään viittaamattomat commitit, vanhenevat 30 päivän kuluttua.

Siksi ”kadonnut” työ kannattaa palauttaa mahdollisimman pian!

Reflog-palautushaaste

Loit uuden ominaisuushaaran, teit useita committeja ja poistit haaran sitten vahingossa yhdistämättä sitä. Suoritat komennon git reflog ja näet seuraavan merkinnän:

...
c0ffee1 HEAD@{3}: commit: Implement new user profile page
bada55e HEAD@{4}: checkout: moving from feature/profile to main
...

Mikä komentojärjestys loisi feature/profile-haaran uudelleen niin, että se osoittaisi viimeiseen commit-tilaan ennen haaran poistamista?

Reflog: Gitin turvaverkko

Olet nyt oppinut käyttämään git reflog -komentoa, joka on tärkeä työkalu ”kadonneen” työn palauttamiseen paikallisessa Git-repositoriossasi. Muista seuraavat asiat:

  • Se seuraa, missä HEAD ja haarojen osoittimet ovat olleet.
  • Voit tarkastella tätä historiaa komennolla git reflog.
  • Voit palauttaa committeja tai haaroja käyttämällä git reset- tai git branch -komentoa yhdessä reflog-merkintöjen (HEAD@{n} tai commit-tiivisteiden) kanssa.
  • Reflog-merkinnät vanhenevat, joten toimi nopeasti, jos sinun on palautettava jotain!

Pidä Git-historiasi siistinä, mutta muista, että reflog on käytettävissä hätätilanteissa!

Aloita maksutta

Opi Git- ja GitHub-ammattilaisen työnkulku tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
12
Oppitunnit
48

Usein kysytyt kysymykset

Onko oppitunti ”Git Reflog ja historian palauttaminen” ilmainen?

Kyllä – oppitunnin ”Git Reflog ja historian palauttaminen” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Git- ja GitHub-ammattilaisen työnkulku-kurssin, päivitä CoddyKit PROhon. Git- ja GitHub-ammattilaisen työnkulku-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Git Reflog ja historian palauttaminen”?

Ottakaa `git reflog` haltuun kadonneiden commitien tai haarojen palauttamista varten ja varmistakaa työskentelynne palautusmahdollisuus. Harjoittelet Git- ja GitHub-ammattilaisen työnkulku-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Git- ja GitHub-ammattilaisen työnkulku-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Git- ja GitHub-ammattilaisen työnkulku-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.

Kuinka kauan ”Git Reflog ja historian palauttaminen”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Git- ja GitHub-ammattilaisen työnkulku-oppitunnilla?

Kyllä. Jokainen Git- ja GitHub-ammattilaisen työnkulku-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Git Reflog ja historian palauttaminen
  2. Git Bisect virheenkorjaukseen
  3. Repositorion ylläpito ja siistiminen
  4. Historian uudelleenkirjoittaminen git filter-repolla
← Takaisin: Git- ja GitHub-ammattilaisen työnkulku