Som programvara för versionskontroll gör Git det förutsägbart enkelt att återställa ändringar. Men även konceptet att ångra en förändring är mer komplicerat än man först tror. Ett Git-förråd är inte riktigt samma sak som den uppsättning filer du arbetar med lokalt. Att ångra ändringar innebär att överväga exakt var du vill ångra dem.
gitkolla upp, git återställning, och gitÅterställ är kommandon som kan hjälpa dig att återgå till en tidigare version, inte bara av din kodbas, utan också av enskilda filer. Lär känna detaljerna i dessa kommandon och du kommer att hoppa runt i din filhistorik som en expert på nolltid.
Vad betyder återställning av en fil, ändå?
Det är viktigt att notera att återställning av en fil kan betyda olika saker för olika personer under olika omständigheter. Även git återställning kommandot kanske inte matchar dina förväntningar på vad återställning innebär.
Ibland vill du ångra lokala ändringar så att en fil är tillbaka i synk med det aktuella arkivet. Vid andra tillfällen kanske du vill återställa ändringar som du redan har anslutit till förvaret.
Följande termer är nyckeln till att förstå skillnaden: arbetsträd, uppställningsområde och förvar. Filerna du redigerar lokalt tillhör arbetsträdet. Filer som du commit hamnar i slutändan i förvaret. När du håller på att samla in ändringar, iscensätter du filer. En fil kan ha olika innehåll på var och en av dessa platser.
Se även: Avancerad Git-handledning
Du kanske tänker på att återställa en fil som att ångra ändringar. Men tillståndet för din fil avgör vilka ändringar du faktiskt ångrar. Det uppenbara fallet är när du gör några ändringar, begår dem och sedan bestämmer dig för att du inte vill ha dem längre.
Ett annat fall kan vara att du iscensatt en fil och nu vill ta bort den.
Hur återställer jag en tidigare engagerad fil?
Låt oss ta itu med ett fall som är lättare att förstå: du har begått en fil och nu vill du återställa ändringarna i den.
Git-kommandot för att göra detta är, något ointuitivt, namngivet kolla upp. Du kanske har använt kolla upp innan för att byta gren, men det är en liten del av vad kommandot kan göra. Det gör det också möjligt för dig att uppdatera filer i ditt arbetsträd för att matcha dem när som helst i förvarets historik. Du kan göra detta för en specifik tagg, gren eller till och med en viss commit.
Den mest användbara, allmänna formen av detta kommando är:
git checkout [commit ID] -- sökväg/till/fil
Här passerar vi en specifik väg (sökväg/till/fil) som bara identifierar en enda fil. Vi anger också ett commit-ID för att hämta filen som den fanns vid den specifika commit. Detta kommando kommer endast att uppdatera filen i vårt arbetsträd.
Observera att om du checkar ut en tidigare version av filen ändras arbetskopian, utan att begå eller ens iscensätta den. För att fullständigt slutföra ångra till förvaret måste du iscensätta filen och skapa en ny commit.
Se även: Hur man inspekterar ett projekts historik med git-logg
Hur ändrar jag det jag iscensätter?
Den andra typen av ångra involverar ditt uppställningsområde. Detta innehåller ändringarna du kommer att utföra bredvid förvaret. Om du har iscensatt en version av en fil och senare bestämmer dig för att du inte vill inkludera den i nästa commit, vill du ta bort den först.
Du kan använda git återställning kommando för att ta bort en stegvis fil:
git återställ HEAD sökväg/till/fil
Kan jag snabbt ångra lokala ändringar?
Ja, du kan ångra ändringar i en lokal fil innan den är iscensatt. Använd följande kommando:
git checkout -- sökväg/till/fil
Observera att detta liknar att återställa en lagringsändring, det utelämnar bara commit-ID. När du har kört detta kommando kommer Git att ångra alla ändringar i din arbetskopia.
Vad sägs om git restore?
Senare versioner av Git har ett nyare kommando: Återställ. För de enkla fallen vi har diskuterat här kan du använda följande motsvarigheter. Så här ångrar du en ändring av arkivet:
git restore --source [commit id] sökväg/till/fil
För att ta bort en fil använd:
git restore --stageed path/to/file
Och för att ångra ändringar i arbetskopior:
git återställ sökväg/till/fil
Att bemästra Gits versioneringskraft är ovärderligt
Även om att återställa en fil kan verka som en vanlig sak att göra, kommer du att upptäcka att det händer ganska sällan i praktiken. Det är mer troligt att du återställer hela commits snarare än enskilda filer. Men vid de tillfällen som du behöver göra det, gör Git det åtminstone ganska enkelt.
Använd dessa Git-kommandon för att utföra operationer som att ta bort en fil från en commit.
Läs Nästa
- Programmering
- GitHub
- Webbutveckling
- Programmering
Bobby är en teknikentusiast som arbetat som mjukvaruutvecklare under de flesta av två decennier. Han brinner för spel, arbetar som chefredaktör på Switch Player Magazine och är fördjupad i alla aspekter av onlinepublicering och webbutveckling.
Prenumerera på vårt nyhetsbrev
Gå med i vårt nyhetsbrev för tekniska tips, recensioner, gratis e-böcker och exklusiva erbjudanden!
Klicka här för att prenumerera