Återställa en Specifik Commit
Svep för att visa menyn
git revert
För att återställa en specifik commit, använd kommandot git revert.
Detta kommando skapar en ny commit som återställer ändringarna som infördes av den angivna commiten.
Grundläggande syntax:
git revert <commit-hash>
Istället för att använda HEAD (som riktar sig mot den senaste commiten), ange hashen för den commit (commit-ID) du vill återställa genom att ersätta <commit-hash> med det faktiska hashvärdet.
Mer om hashar
Varje commit har ett unikt ID — en 40-teckens hexadecimalt sträng bestående av siffror (0–9) och bokstäver (a–f). Denna identifierare kallas en hash. Visa nu den senaste commiten:
git log -n 1
Här är dess hash:
1b00736255dca7d78659a9971d0c30fba0eb3075
Du kommer att ha en annan hash för denna commit av anledningen som förklaras nedan.
Commit-hashen beräknas med hjälp av SHA-1-algoritmen baserat på följande information:
- Commit-meddelande;
- Datum;
- Författare;
- Ögonblicksbild av arbetskatalogen;
- Hash för föregående commit (eller commits om det finns fler än en föregångare).
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 hashvärden som commit-ID:n konsekvensen i arkivet. Dessutom är sannolikheten för att två olika commits får 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ärrarkiv.
Exempelarbetsflöde
Innan du bestämmer vilken commit som ska återställas, visa de fyra senaste commitarna:
git log -n 4
Det finns en commit där filen recipe.txt lades till.
Återställ denna commit för att skapa en ny commit som tar bort dessa ändringar och effektivt raderar filen.
I detta exempel är commit-hashen:
043b634d76a7a7744757350512b6367417c29e0
Din commit-hash kommer att vara annorlunda. Nu återställ denna commit:
git revert 043b634d76a7aa7744757350512bb3b7417c29e0
Ersätt denna hash med din hash.
Återigen öppnas standardtextredigeraren med standardmeddelandet för commit för återställningen. Lämna meddelandet oförändrat.
Stäng sedan textredigeraren korrekt och visa ändringarna som gjorts i den senaste committen:
git show HEAD
7 borttagningar har skett, vilket innebär att alla sju rader i filen togs bort. Verifiera nu att själva filen har tagits bort genom att lista alla icke-dolda filer och kataloger i projektkatalogen:
ls -l
Filen recipe.txt har tagits bort.
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