Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Tilbakeføring av en Spesifikk Commit | Angre Endringer
Git Essentials

bookTilbakeføring av en Spesifikk Commit

git revert

Som vi allerede har nevnt, brukes kommandoen git revert for å tilbakestille en spesifikk commit. Denne kommandoen oppretter en ny commit som reverserer endringene introdusert av den angitte commiten. Grunnleggende syntaks er som følger:

git revert <commit-hash>

Som du ser, i stedet for å bruke HEAD slik vi gjorde for å tilbakestille den siste commiten, må vi nå spesifisere hashen til en bestemt commit (commit-ID) som vi ønsker å tilbakestille (erstatt <commit-hash> med en gyldig hash).

Mer om hasher

Husk at hver commit har sin unike ID, som i hovedsak er en streng av sifre (0-9) og bokstaver (a-f), altså en heksadesimal streng. Denne 40-tegns strengen kalles hash. La oss se på vår siste commit:

Her er dens hash:

1b00736255dca7d78659a9971d0c30fba0eb3075

Note
Merk

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 foreldrecommit (eller commits når det er mer enn én forelder).

Hvis commiten er den første i depotet, blir hash for foreldrecommit å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 har samme hash (sannsynligheten for kollisjon) ekstremt lav, så det er svært usannsynlig at det skjer ved en tilfeldighet.

I hovedsak, hvis noe endres i commiten, vil hashen også endre seg. Dette betyr at hvis dataene blir korrupte av en eller annen grunn, kan Git bruke hashen til å identifisere dette.

Note
Merk

Når du endrer en commit, endres commit-ID-en, og derfor er det bedre å unngå å bruke kommandoen git commit --amend når du arbeider med eksterne (remote) repositorier.

Eksempel på arbeidsflyt

Før vi bestemmer oss for hvilken commit vi skal tilbakestille, la oss se på de fire siste commitene:

Vi ser at det finnes en commit hvor vi la til filen recipe.txt. La oss tilbakestille denne committen ved å opprette en ny commit som vil angre disse endringene og i praksis slette filen. I mitt tilfelle er hashen følgende:

043b634d76a7a7744757350512b6367417c29e0

Din hash for denne committen vil imidlertid være annerledes. Nå kan vi tilbakestille denne committen:

Erstatt denne hashen med din hash.

Igjen åpnes standard tekstredigerer med standard commit-melding for tilbakeføring. Vi lar den stå uendret.

Deretter lukker vi tekstredigereren på riktig måte og viser endringene som ble gjort i denne siste commiten:

7 slettinger fant sted, noe som betyr at alle 7 linjene i filen ble slettet. La oss nå verifisere at selve filen ble slettet ved å liste opp alle ikke-skjulte filer og kataloger i prosjektmappen vår:

Vi har slettet recipe.txt-filen.

question-icon

Koble handlingene til de respektive kommandoene.


Revert the latest commit:

Revert a specific commit:

Unstage changes:

Revert unstaged changes:

Unstage changes and then revert the changes in the working directory:

Overwrite the existing commit:

Click or drag`n`drop items and fill in the blanks

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 3. Kapittel 5

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Awesome!

Completion rate improved to 3.57

bookTilbakeføring av en Spesifikk Commit

Sveip for å vise menyen

git revert

Som vi allerede har nevnt, brukes kommandoen git revert for å tilbakestille en spesifikk commit. Denne kommandoen oppretter en ny commit som reverserer endringene introdusert av den angitte commiten. Grunnleggende syntaks er som følger:

git revert <commit-hash>

Som du ser, i stedet for å bruke HEAD slik vi gjorde for å tilbakestille den siste commiten, må vi nå spesifisere hashen til en bestemt commit (commit-ID) som vi ønsker å tilbakestille (erstatt <commit-hash> med en gyldig hash).

Mer om hasher

Husk at hver commit har sin unike ID, som i hovedsak er en streng av sifre (0-9) og bokstaver (a-f), altså en heksadesimal streng. Denne 40-tegns strengen kalles hash. La oss se på vår siste commit:

Her er dens hash:

1b00736255dca7d78659a9971d0c30fba0eb3075

Note
Merk

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 foreldrecommit (eller commits når det er mer enn én forelder).

Hvis commiten er den første i depotet, blir hash for foreldrecommit å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 har samme hash (sannsynligheten for kollisjon) ekstremt lav, så det er svært usannsynlig at det skjer ved en tilfeldighet.

I hovedsak, hvis noe endres i commiten, vil hashen også endre seg. Dette betyr at hvis dataene blir korrupte av en eller annen grunn, kan Git bruke hashen til å identifisere dette.

Note
Merk

Når du endrer en commit, endres commit-ID-en, og derfor er det bedre å unngå å bruke kommandoen git commit --amend når du arbeider med eksterne (remote) repositorier.

Eksempel på arbeidsflyt

Før vi bestemmer oss for hvilken commit vi skal tilbakestille, la oss se på de fire siste commitene:

Vi ser at det finnes en commit hvor vi la til filen recipe.txt. La oss tilbakestille denne committen ved å opprette en ny commit som vil angre disse endringene og i praksis slette filen. I mitt tilfelle er hashen følgende:

043b634d76a7a7744757350512b6367417c29e0

Din hash for denne committen vil imidlertid være annerledes. Nå kan vi tilbakestille denne committen:

Erstatt denne hashen med din hash.

Igjen åpnes standard tekstredigerer med standard commit-melding for tilbakeføring. Vi lar den stå uendret.

Deretter lukker vi tekstredigereren på riktig måte og viser endringene som ble gjort i denne siste commiten:

7 slettinger fant sted, noe som betyr at alle 7 linjene i filen ble slettet. La oss nå verifisere at selve filen ble slettet ved å liste opp alle ikke-skjulte filer og kataloger i prosjektmappen vår:

Vi har slettet recipe.txt-filen.

question-icon

Koble handlingene til de respektive kommandoene.


Revert the latest commit:

Revert a specific commit:

Unstage changes:

Revert unstaged changes:

Unstage changes and then revert the changes in the working directory:

Overwrite the existing commit:

Click or drag`n`drop items and fill in the blanks

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 3. Kapittel 5
some-alt