Tietyn Commitin Palauttaminen
Pyyhkäise näyttääksesi valikon
git revert
Tietyn commitin palauttaminen komennolla git revert.
Tämä komento luo uuden commitin, joka kumoaa valitun commitin tekemät muutokset.
Perussyntaksi:
git revert <commit-hash>
Sen sijaan, että käyttäisit HEAD-viittausta (joka kohdistuu viimeisimpään commitiin), määritä palautettavan commitin hash (commit ID) korvaamalla <commit-hash> todellisella hash-arvolla.
Lisätietoa hasheista
Jokaisella commitilla on yksilöllinen tunniste — 40-merkkinen heksadesimaalinen merkkijono, joka koostuu numeroista (0–9) ja kirjaimista (a–f). Tätä tunnistetta kutsutaan hashiksi. Näytä nyt viimeisin commit:
git log -n 1
Tässä on sen hash-arvo:
1b00736255dca7d78659a9971d0c30fba0eb3075
Tämän commitin hash-arvo on sinulla eri, syystä joka selitetään alla.
Commitin hash lasketaan SHA-1 -algoritmilla seuraavien tietojen perusteella:
- Commit-viesti;
- Päivämäärä;
- Tekijä;
- Työpuun tilanne;
- Edeltävän commitin hash (tai commitien, jos vanhempia on useampi).
Jos commit on ensimmäinen repositoriossa, edeltävän commitin hashia ei luonnollisesti lasketa.
Koska kaikki nämä commitin tiedot käytetään sen hashin laskemiseen, hashien käyttäminen commit-tunnisteina varmistaa repositorion yhtenäisyyden. Lisäksi kahden eri commitin osuessa samaan hash-arvoon (törmäys) on äärimmäisen epätodennäköistä, joten se tapahtuu harvoin sattumalta.
Käytännössä, jos commitissa muutetaan mitään, myös sen hash muuttuu. Tämä tarkoittaa, että jos data jostain syystä vioittuu, Git voi tunnistaa tämän hashin avulla.
Kun committia muokataan jälkikäteen, commitin tunniste muuttuu, minkä vuoksi git commit --amend -komennon käyttöä ei suositella etärepositorioiden kanssa työskenneltäessä.
Esimerkkityönkulku
Ennen kuin päätät, minkä commitin haluat perua, tarkastele neljää viimeisintä committia:
git log -n 4
Yksi commit lisää tiedoston recipe.txt.
Peru tämä commit luodaksesi uuden commitin, joka kumoaa nämä muutokset ja poistaa tiedoston.
Tässä esimerkissä commitin hash on:
043b634d76a7a7744757350512b6367417c29e0
Oma commit-hashisi on erilainen. Nyt peru tämä commit:
git revert 043b634d76a7aa7744757350512bb3b7417c29e0
Korvaa tämä hash omallasi.
Jälleen kerran oletuseditori avautuu ja näyttää oletusviestin palautukselle. Jätä viesti muuttamatta.
Sulje seuraavaksi tekstieditori asianmukaisesti ja näytä viimeisimmän commitin muutokset:
git show HEAD
7 poistettua riviä, eli kaikki tiedoston seitsemän riviä poistettiin. Varmista nyt, että tiedosto on todella poistettu listaamalla kaikki ei-piilotetut tiedostot ja kansiot projektihakemistossa:
ls -l
Tiedosto recipe.txt on poistettu onnistuneesti.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme