Tilbakeføring av en Spesifikk Commit
Sveip for å vise menyen
git revert
For å tilbakestille en spesifikk commit, bruk kommandoen git revert.
Denne kommandoen oppretter en ny commit som reverserer endringene introdusert av den angitte commiten.
Grunnleggende syntaks:
git revert <commit-hash>
I stedet for å bruke HEAD (som peker på den siste commiten), spesifiser hashen til commiten (commit ID) du ønsker å tilbakestille ved å erstatte <commit-hash> med den faktiske hash-verdien.
Mer om hasher
Hver commit har en unik ID — en 40-tegns heksadesimal streng bestående av sifre (0–9) og bokstaver (a–f). Denne identifikatoren kalles en hash. Se nå på den siste commiten:
git log -n 1
Her er dens hash:
1b00736255dca7d78659a9971d0c30fba0eb3075
Du vil ha en annen hash for denne commiten av grunnen som forklares nedenfor.
Commit-hashen beregnes ved hjelp av SHA-1-algoritmen basert på følgende informasjon:
- Commit-melding;
- Dato;
- Forfatter;
- Snapshot av arbeidsområdet;
- Hash for foreldre-commit (eller commits når det er mer enn én forelder).
Hvis commiten er den første i depotet, blir hash for foreldre-commit åpenbart ikke beregnet.
Siden all denne commit-informasjonen brukes til å beregne hashen, sikrer bruk av hasher som commit-IDer konsistensen i depotet. I tillegg er sannsynligheten for at to forskjellige commits får samme hash (sannsynligheten for kollisjon) ekstremt lav, så det er svært usannsynlig at det skjer ved en tilfeldighet.
I hovedsak vil hashen endre seg hvis noe endres i commiten. Dette betyr at hvis dataene blir korrupte av en eller annen grunn, kan Git bruke hashen til å identifisere dette.
Når en commit endres, endres commit-IDen, og derfor er det bedre å unngå å bruke kommandoen git commit --amend når du arbeider med eksterne depot.
Eksempel på arbeidsflyt
Før du bestemmer hvilken commit som skal tilbakestilles, vis de fire siste commitene:
git log -n 4
Det finnes en commit hvor filen recipe.txt ble lagt til.
Tilbakestill denne committen for å opprette en ny commit som opphever disse endringene og effektivt sletter filen.
I dette eksemplet er commit-hashen:
043b634d76a7a7744757350512b6367417c29e0
Din commit-hash vil være annerledes. Nå skal du tilbakestille denne committen:
git revert 043b634d76a7aa7744757350512bb3b7417c29e0
Bytt ut denne hashen med din hash.
Igjen åpnes standard tekstredigerer med standard commit-melding for tilbakestillingen. La meldingen stå uendret.
Lukk deretter teksteditoren riktig og vis endringene som er gjort i den siste commit-en:
git show HEAD
7 slettinger har skjedd, noe som betyr at alle de syv linjene i filen ble fjernet. Bekreft nå at selve filen ble slettet ved å liste opp alle ikke-skjulte filer og kataloger i prosjektmappen:
ls -l
Filen recipe.txt har blitt slettet.
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår