Som software til versionskontrol gør Git det forudsigeligt nemt at rulle ændringer tilbage. Men selv konceptet med at fortryde en ændring er mere kompliceret, end du måske først tror. Et Git-lager er ikke helt det samme som det sæt filer, du arbejder på lokalt. At fortryde ændringer betyder at overveje præcis, hvor du vil fortryde dem.
gitkassen, git nulstilles, og gitgendanne er kommandoer, der kan hjælpe dig med at vende tilbage til en tidligere version, ikke kun af din kodebase, men også af individuelle filer. Lær detaljerne i disse kommandoer at kende, og du vil springe rundt i din filhistorik som en ekspert på ingen tid.
Hvad betyder nulstilling af en fil alligevel?
Det er vigtigt at bemærke, at nulstilling af en fil kan betyde forskellige ting for forskellige mennesker under forskellige omstændigheder. Også den git nulstilles kommandoen matcher muligvis ikke dine forventninger til, hvad nulstilling betyder.
Nogle gange vil du fortryde lokale ændringer, så en fil er tilbage i synkronisering med det aktuelle lager. Ved andre lejligheder ønsker du måske at rulle ændringer tilbage, som du allerede har forpligtet til lageret.
Følgende udtryk er nøglen til at forstå forskellen: arbejdstræ, iscenesættelsesområde og depot. De filer, du redigerer lokalt, tilhører arbejdstræet. Filer, som du begår, ender i sidste ende i depotet. Når du er i gang med at indsamle ændringer, iscenesætter du filer. En fil kan have forskelligt indhold på hver af disse placeringer.
Se også: Avanceret Git Tutorial
Du kan tænke på at nulstille en fil som at fortryde ændringer. Men din fils tilstand vil afgøre, hvilke ændringer du rent faktisk fortryder. Det åbenlyse tilfælde er, når du foretager nogle ændringer, forpligter dem og senere beslutter dig for, at du ikke vil have dem længere.
Et andet tilfælde kan være, at du iscenesatte en fil og nu vil fjerne den.
Hvordan ruller jeg en tidligere forpligtet fil tilbage?
Lad os behandle en sag, der er lettere at forstå: du har begået en fil, og nu vil du rulle ændringerne til den tilbage.
Git-kommandoen til at gøre dette er, noget uintuitivt, navngivet kassen. Du har måske brugt kassen før for at skifte gren, men det er en lille del af, hvad kommandoen kan. Det giver dig også mulighed for at opdatere filer i dit arbejdstræ, så de matcher dem på et hvilket som helst tidspunkt i depotets historie. Du kan gøre dette for et specifikt tag, en gren eller endda en bestemt commit.
Den mest nyttige, generelle form for denne kommando er:
git checkout [commit ID] -- sti/til/fil
Her passerer vi en bestemt vej (sti/til/fil), der kun identificerer en enkelt fil. Vi angiver også et commit-id for at få filen, som den eksisterede ved den specifikke commit. Denne kommando vil kun opdatere filen i vores arbejdstræ.
Bemærk, at tjek af en tidligere version af filen ændrer arbejdskopien uden at begå eller endda iscenesætte den. For fuldt ud at fuldføre fortrydelsen til depotet, skal du iscenesætte filen og oprette en ny commit.
Se også: Sådan inspiceres et projekts historie med git-log
Hvordan ændrer jeg det, jeg iscenesætter?
Den anden type fortrydelse involverer dit iscenesættelsesområde. Dette indeholder de ændringer, du vil foretage ved siden af lageret. Hvis du har iscenesat en version af en fil og senere beslutter, at du ikke vil inkludere den i den næste commit, vil du først fjerne den i scenen.
Du kan bruge git nulstilles kommando for at fjerne en iscenesat fil:
git nulstil HEAD sti/til/fil
Kan jeg hurtigt fortryde lokale ændringer?
Ja, du kan fortryde ændringer af en lokal fil, før den iscenesættes. Brug følgende kommando:
git checkout -- sti/til/fil
Bemærk, at dette svarer til at rulle en repository-ændring tilbage, det udelader bare commit-id'et. Når du udfører denne kommando, vil Git fortryde eventuelle ændringer i din arbejdskopi.
Hvad med git restore?
Senere versioner af Git har en nyere kommando: gendanne. Til de simple tilfælde, vi har diskuteret her, kan du bruge følgende ækvivalenter. Sådan fortryder du en ændring af lageret:
git restore --source [commit id] sti/til/fil
For at fjerne en fil brug:
git restore --iscenesat sti/til/fil
Og for at fortryde ændringer i arbejdskopi:
git gendan sti/til/fil
At mestre Gits versioneringskraft er uvurderlig
Selvom nulstilling af en fil kan virke som en almindelig ting at gøre, vil du opdage, at det sker temmelig sjældent i praksis. Det er mere sandsynligt, at du vil rulle hele commits tilbage i stedet for individuelle filer. Men i de tilfælde, hvor du skal gøre det, gør Git det i det mindste ret ligetil.
Brug disse Git-kommandoer til at udføre operationer som at fjerne en fil fra en commit.
Læs Næste
- Programmering
- GitHub
- Web-udvikling
- Programmering
Bobby er en teknologientusiast, der har arbejdet som softwareudvikler i det meste af to årtier. Han brænder for spil, arbejder som chefredaktør på Switch Player Magazine og er fordybet i alle aspekter af online publicering og webudvikling.
Abonner på vores nyhedsbrev
Tilmeld dig vores nyhedsbrev for tekniske tips, anmeldelser, gratis e-bøger og eksklusive tilbud!
Klik her for at abonnere