Tilbageførsel af en Specifik Commit
Stryg for at vise menuen
git revert
For at fortryde en specifik commit, bruges kommandoen git revert.
Denne kommando opretter en ny commit, der omvender de ændringer, som den angivne commit har introduceret.
Grundlæggende syntaks:
git revert <commit-hash>
I stedet for at bruge HEAD (som retter sig mod den seneste commit), angives hash for den commit (commit ID), du ønsker at fortryde, ved at erstatte <commit-hash> med den faktiske hash-værdi.
Mere om hashes
Hver commit har en unik ID — en 40-tegns hexadecimalt streng bestående af cifre (0–9) og bogstaver (a–f). Denne identifikator kaldes en hash. Se nu den seneste commit:
git log -n 1
Her er dens hash:
1b00736255dca7d78659a9971d0c30fba0eb3075
Du vil have en anden hash for denne commit af den nedenfor forklarede grund.
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 hash af parent commit tilsyneladende ikke.
Da alle disse commit-oplysninger bruges til at beregne dets hash, sikrer brugen af hashes som commit-ID'er konsistensen af depotet. Desuden er sandsynligheden for, at to forskellige commits har samme hash (sandsynligheden for kollision), ekstremt lav, så det er meget usandsynligt, at det sker ved et tilfælde.
Grundlæggende vil hash-værdien ændre sig, hvis noget ændres i committet. Det betyder, at hvis dataene bliver korrupte af en eller anden grund, kan Git bruge hashen til at identificere dette.
Når man ændrer et commit, ændres commit-ID'et, hvilket er grunden til, at det er bedre ikke at bruge kommandoen git commit --amend, når man arbejder med eksterne repositories.
Eksempel på arbejdsgang
Før du beslutter, hvilken commit der skal fortrydes, vis de fire seneste commits:
git log -n 4
Der er en commit, hvor filen recipe.txt blev tilføjet.
Fortryd denne commit for at oprette en ny, der ophæver disse ændringer og effektivt sletter filen.
I dette eksempel er commit-hashen:
043b634d76a7a7744757350512b6367417c29e0
Din commit-hash vil være anderledes. Nu skal du fortryde denne commit:
git revert 043b634d76a7aa7744757350512bb3b7417c29e0
Erstat denne hash med din egen hash.
Endnu en gang åbnes standardteksteditoren med standard commit-beskeden for tilbagerulningen. Lad beskeden være uændret.
Luk derefter teksteditoren korrekt, og vis ændringerne foretaget i det seneste commit:
git show HEAD
7 sletninger fandt sted, hvilket betyder, at alle syv linjer i filen blev fjernet. Bekræft nu, at selve filen blev slettet, ved at liste alle ikke-skjulte filer og mapper i projektmappen:
ls -l
Filen recipe.txt er blevet slettet med succes.
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat