Återställa en Specifik Commit
git revert
Som vi redan har nämnt används kommandot git revert
för att återställa en specifik commit. Detta kommando skapar en ny commit som upphäver ändringarna som infördes av den angivna commiten. Den grundläggande syntaxen är följande:
git revert <commit-hash>
Som du kan se, istället för att använda HEAD som vi gjorde för att återställa den senaste commiten, ska vi nu ange hashen för en specifik commit (commit-ID) som vi vill återställa (ersätt <commit-hash>
med en giltig hash).
Mer om hashar
Kom ihåg att varje commit har ett unikt ID som i grunden är en sträng av siffror (0-9) och bokstäver (a-f), en hexadecimal sträng. Denna 40-tecken långa sträng kallas hash. Låt oss titta på vår senaste commit:
Här är dess hash:
1b00736255dca7d78659a9971d0c30fba0eb3075
Du kommer att ha en annan hash för denna commit av den anledning som förklaras nedan.
Commit-hashen beräknas med SHA-1-algoritmen baserat på följande information:
- Commit-meddelande;
- Datum;
- Författare;
- Snapshot av arbetskatalogen;
- Hash för föregående commit (eller commits om det finns fler än en förälder).
Om commiten är den första i arkivet, beräknas uppenbarligen inte hash för föregående commit.
Eftersom all denna commit-information används för att beräkna dess hash, säkerställer användningen av hashar som commit-ID:n konsekvens i arkivet. Dessutom är sannolikheten för att två olika commits har samma hash (sannolikheten för kollision) extremt låg, så det är mycket osannolikt att det sker av en slump.
I princip, om något ändras i commiten, kommer dess hash också att ändras. Detta innebär att om data skulle bli korrupt av någon anledning, kan Git använda hashen för att identifiera detta.
När en commit ändras, ändras commit-ID:t, vilket är anledningen till att det är bättre att inte använda kommandot git commit --amend
när du arbetar med fjärrrepositoryn.
Exempelarbetsflöde
Innan vi bestämmer vilken commit vi ska återställa, låt oss titta på de fyra senaste commitarna:
Vi kan se att det finns en commit där vi lade till filen recipe.txt
. Låt oss återställa denna commit genom att skapa en ny commit som tar bort dessa ändringar och i praktiken raderar filen. I mitt fall är dess hash följande:
043b634d76a7a7744757350512b6367417c29e0
Din hash för denna commit kommer dock att vara annorlunda. Vi kan nu återställa denna commit:
Ersätt denna hash med din hash.
Återigen öppnas standardtextredigeraren med standardmeddelandet för ångring. Vi låter det vara oförändrat.
Därefter stänger vi textredigeraren på lämpligt sätt och visar ändringarna som gjorts i denna senaste commit:
7 borttagningar har skett, vilket innebär att alla 7 rader i filen har tagits bort. Låt oss nu verifiera att själva filen har tagits bort genom att lista alla icke-dolda filer och kataloger i vår projektkatalog:
Vi har framgångsrikt tagit bort filen recipe.txt
.
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
Awesome!
Completion rate improved to 3.57
Återställa en Specifik Commit
Svep för att visa menyn
git revert
Som vi redan har nämnt används kommandot git revert
för att återställa en specifik commit. Detta kommando skapar en ny commit som upphäver ändringarna som infördes av den angivna commiten. Den grundläggande syntaxen är följande:
git revert <commit-hash>
Som du kan se, istället för att använda HEAD som vi gjorde för att återställa den senaste commiten, ska vi nu ange hashen för en specifik commit (commit-ID) som vi vill återställa (ersätt <commit-hash>
med en giltig hash).
Mer om hashar
Kom ihåg att varje commit har ett unikt ID som i grunden är en sträng av siffror (0-9) och bokstäver (a-f), en hexadecimal sträng. Denna 40-tecken långa sträng kallas hash. Låt oss titta på vår senaste commit:
Här är dess hash:
1b00736255dca7d78659a9971d0c30fba0eb3075
Du kommer att ha en annan hash för denna commit av den anledning som förklaras nedan.
Commit-hashen beräknas med SHA-1-algoritmen baserat på följande information:
- Commit-meddelande;
- Datum;
- Författare;
- Snapshot av arbetskatalogen;
- Hash för föregående commit (eller commits om det finns fler än en förälder).
Om commiten är den första i arkivet, beräknas uppenbarligen inte hash för föregående commit.
Eftersom all denna commit-information används för att beräkna dess hash, säkerställer användningen av hashar som commit-ID:n konsekvens i arkivet. Dessutom är sannolikheten för att två olika commits har samma hash (sannolikheten för kollision) extremt låg, så det är mycket osannolikt att det sker av en slump.
I princip, om något ändras i commiten, kommer dess hash också att ändras. Detta innebär att om data skulle bli korrupt av någon anledning, kan Git använda hashen för att identifiera detta.
När en commit ändras, ändras commit-ID:t, vilket är anledningen till att det är bättre att inte använda kommandot git commit --amend
när du arbetar med fjärrrepositoryn.
Exempelarbetsflöde
Innan vi bestämmer vilken commit vi ska återställa, låt oss titta på de fyra senaste commitarna:
Vi kan se att det finns en commit där vi lade till filen recipe.txt
. Låt oss återställa denna commit genom att skapa en ny commit som tar bort dessa ändringar och i praktiken raderar filen. I mitt fall är dess hash följande:
043b634d76a7a7744757350512b6367417c29e0
Din hash för denna commit kommer dock att vara annorlunda. Vi kan nu återställa denna commit:
Ersätt denna hash med din hash.
Återigen öppnas standardtextredigeraren med standardmeddelandet för ångring. Vi låter det vara oförändrat.
Därefter stänger vi textredigeraren på lämpligt sätt och visar ändringarna som gjorts i denna senaste commit:
7 borttagningar har skett, vilket innebär att alla 7 rader i filen har tagits bort. Låt oss nu verifiera att själva filen har tagits bort genom att lista alla icke-dolda filer och kataloger i vår projektkatalog:
Vi har framgångsrikt tagit bort filen recipe.txt
.
Tack för dina kommentarer!