Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Tilbageførsel af en Specifik Commit | Fortryd Ændringer
Git Essentials

bookTilbageførsel af en Specifik Commit

git revert

Som tidligere nævnt bruges kommandoen git revert til at fortryde en specifik commit. Denne kommando opretter en ny commit, der ophæver de ændringer, som den angivne commit har indført. Den grundlæggende syntaks er som følger:

git revert <commit-hash>

Som det fremgår, skal man nu angive hash for en bestemt commit (commit ID), som man ønsker at fortryde (erstat <commit-hash> med en gyldig hash), i stedet for at bruge HEAD som ved fortrydelse af den seneste commit.

Mere om hashes

Husk, hver commit har sit unikke ID, som i bund og grund er en streng af cifre (0-9) og bogstaver (a-f), altså en hexadecimal streng. Denne 40-tegns streng kaldes en hash. Lad os se på vores seneste commit:

Her er dens hash:

1b00736255dca7d78659a9971d0c30fba0eb3075

Note
Bemærk

Du vil have en anden hash for denne commit af den nedenfor forklarede årsag.

Commit-hashen beregnes ved hjælp af SHA-1-algoritmen baseret på følgende oplysninger:

  • Commit-besked;
  • Dato;
  • Forfatter;
  • Snapshot af working tree;
  • Hash af parent commit (eller commits, hvis der er mere end én parent).

Hvis committet er det første i repositoryet, beregnes parent commit-hashen tilsyneladende ikke.

Da al denne commit-information bruges til at beregne dens hash, sikrer brugen af hashes som commit-ID'er konsistensen af repositoryet. Desuden er sandsynligheden for, at to forskellige commits har samme hash (sandsynligheden for kollision) ekstremt lav, så det er meget usandsynligt, at det sker tilfældigt.

Grundlæggende betyder det, at hvis noget ændres i committet, ændres dets hash også. Det betyder, at hvis dataene bliver korrupte af en eller anden grund, kan Git bruge hashen til at identificere dette.

Note
Bemærk

Når en commit ændres, ændres commit-ID'et, hvilket er grunden til, at det er bedre ikke at bruge kommandoen git commit --amend, når der arbejdes med eksterne repositories.

Eksempel på arbejdsgang

Før vi beslutter, hvilken commit der skal fortrydes, lad os se på de fire seneste commits:

Vi kan se, at der er en commit, hvor vi tilføjede filen recipe.txt. Lad os fortryde denne commit ved at oprette en ny commit, som vil annullere disse ændringer og i praksis slette filen. I mit tilfælde er dens hash følgende:

043b634d76a7a7744757350512b6367417c29e0

Din hash for denne commit vil dog være anderledes. Vi kan nu fortryde denne commit:

Erstat denne hash med din hash.

Endnu en gang åbnes standardteksteditoren med standard commit-besked til tilbageførsel. Vi lader den være uændret.

Dernæst lukkes teksteditoren korrekt, og ændringerne i denne seneste commit vises:

7 sletninger fandt sted, hvilket betyder, at alle 7 linjer i filen blev slettet. Lad os nu bekræfte, at selve filen blev slettet ved at liste alle ikke-skjulte filer og mapper i vores projektmappe:

Vi har med succes slettet filen recipe.txt.

question-icon

Match handlingerne med de respektive kommandoer.


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

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 3. Kapitel 5

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Suggested prompts:

What happens if I revert a commit that is not the latest one?

Can I revert multiple commits at once?

What should I do if I get a merge conflict during revert?

Awesome!

Completion rate improved to 3.57

bookTilbageførsel af en Specifik Commit

Stryg for at vise menuen

git revert

Som tidligere nævnt bruges kommandoen git revert til at fortryde en specifik commit. Denne kommando opretter en ny commit, der ophæver de ændringer, som den angivne commit har indført. Den grundlæggende syntaks er som følger:

git revert <commit-hash>

Som det fremgår, skal man nu angive hash for en bestemt commit (commit ID), som man ønsker at fortryde (erstat <commit-hash> med en gyldig hash), i stedet for at bruge HEAD som ved fortrydelse af den seneste commit.

Mere om hashes

Husk, hver commit har sit unikke ID, som i bund og grund er en streng af cifre (0-9) og bogstaver (a-f), altså en hexadecimal streng. Denne 40-tegns streng kaldes en hash. Lad os se på vores seneste commit:

Her er dens hash:

1b00736255dca7d78659a9971d0c30fba0eb3075

Note
Bemærk

Du vil have en anden hash for denne commit af den nedenfor forklarede årsag.

Commit-hashen beregnes ved hjælp af SHA-1-algoritmen baseret på følgende oplysninger:

  • Commit-besked;
  • Dato;
  • Forfatter;
  • Snapshot af working tree;
  • Hash af parent commit (eller commits, hvis der er mere end én parent).

Hvis committet er det første i repositoryet, beregnes parent commit-hashen tilsyneladende ikke.

Da al denne commit-information bruges til at beregne dens hash, sikrer brugen af hashes som commit-ID'er konsistensen af repositoryet. Desuden er sandsynligheden for, at to forskellige commits har samme hash (sandsynligheden for kollision) ekstremt lav, så det er meget usandsynligt, at det sker tilfældigt.

Grundlæggende betyder det, at hvis noget ændres i committet, ændres dets hash også. Det betyder, at hvis dataene bliver korrupte af en eller anden grund, kan Git bruge hashen til at identificere dette.

Note
Bemærk

Når en commit ændres, ændres commit-ID'et, hvilket er grunden til, at det er bedre ikke at bruge kommandoen git commit --amend, når der arbejdes med eksterne repositories.

Eksempel på arbejdsgang

Før vi beslutter, hvilken commit der skal fortrydes, lad os se på de fire seneste commits:

Vi kan se, at der er en commit, hvor vi tilføjede filen recipe.txt. Lad os fortryde denne commit ved at oprette en ny commit, som vil annullere disse ændringer og i praksis slette filen. I mit tilfælde er dens hash følgende:

043b634d76a7a7744757350512b6367417c29e0

Din hash for denne commit vil dog være anderledes. Vi kan nu fortryde denne commit:

Erstat denne hash med din hash.

Endnu en gang åbnes standardteksteditoren med standard commit-besked til tilbageførsel. Vi lader den være uændret.

Dernæst lukkes teksteditoren korrekt, og ændringerne i denne seneste commit vises:

7 sletninger fandt sted, hvilket betyder, at alle 7 linjer i filen blev slettet. Lad os nu bekræfte, at selve filen blev slettet ved at liste alle ikke-skjulte filer og mapper i vores projektmappe:

Vi har med succes slettet filen recipe.txt.

question-icon

Match handlingerne med de respektive kommandoer.


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

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 3. Kapitel 5
some-alt