Som programvare for versjonskontroll gjør Git det forutsigbart enkelt å rulle tilbake endringer. Men selv konseptet med å angre en endring er mer komplisert enn du kanskje først tror. Et Git-depot er ikke helt det samme som settet med filer du jobber med lokalt. Å angre endringer betyr å vurdere nøyaktig hvor du vil angre dem.
gitSjekk ut, git tilbakestilt, og gitrestaurere er kommandoer som kan hjelpe deg å gå tilbake til en tidligere versjon, ikke bare av kodebasen din, men også av individuelle filer. Bli kjent med detaljene i disse kommandoene, og du vil hoppe rundt i filhistorikken din som en ekspert på kort tid.
Hva betyr det å tilbakestille en fil, uansett?
Det er viktig å merke seg at tilbakestilling av en fil kan bety forskjellige ting for forskjellige personer under forskjellige omstendigheter. Også git tilbakestilt kommandoen samsvarer kanskje ikke med forventningene dine for hva tilbakestilling betyr.
Noen ganger vil du angre lokale endringer slik at en fil er tilbake synkronisert med gjeldende depot. Ved andre anledninger vil du kanskje tilbakestille endringer som du allerede har forpliktet til depotet.
Følgende termer er nøkkelen til å forstå forskjellen: arbeidstre, oppsamlingsområde og depot. Filene du redigerer lokalt tilhører arbeidstreet. Filer du bruker, havner til slutt i depotet. Når du er i ferd med å samle endringer, iscenesetter du filer. En fil kan ha forskjellig innhold på hver av disse stedene.
Se også: Avansert Git-opplæring
Du kan tenke på å tilbakestille en fil som å angre endringer. Men tilstanden til filen din vil avgjøre hvilke endringer du faktisk angrer. Det åpenbare tilfellet er når du gjør noen endringer, forplikter dem, og senere bestemmer deg for at du ikke vil ha dem lenger.
Et annet tilfelle kan være at du iscenesatte en fil og nå ønsker å fjerne den.
Hvordan ruller jeg tilbake en tidligere forpliktet fil?
La oss behandle en sak som er lettere å forstå: du har forpliktet en fil og nå vil du tilbakestille endringene til den.
Git-kommandoen for å gjøre dette er, noe unintuitivt, navngitt Sjekk ut. Du har kanskje brukt Sjekk ut før for å bytte grener, men det er en liten del av hva kommandoen kan gjøre. Det lar deg også oppdatere filer i arbeidstreet ditt for å matche dem når som helst i depotets historie. Du kan gjøre dette for en bestemt merkelapp, gren eller til og med en bestemt forpliktelse.
Den mest nyttige, generelle formen for denne kommandoen er:
git checkout [commit ID] -- bane/til/fil
Her passerer vi en bestemt vei (bane/til/fil) som identifiserer bare en enkelt fil. Vi spesifiserer også en commit-ID for å få filen slik den eksisterte ved den spesifikke commit-en. Denne kommandoen vil kun oppdatere filen i arbeidstreet vårt.
Merk at ved å sjekke ut en tidligere versjon av filen, endres arbeidskopien, uten å forplikte eller iscenesette den. For å fullføre angreningen til depotet, må du iscenesette filen og opprette en ny forpliktelse.
Se også: Hvordan inspisere et prosjekts historie med git-logg
Hvordan endrer jeg det jeg iscenesetter?
Den andre typen angre involverer oppsetningsområdet ditt. Dette inneholder endringene du vil foreta ved siden av depotet. Hvis du har iscenesatt en versjon av en fil og senere bestemmer deg for at du ikke vil inkludere den i neste commit, vil du først fjerne den.
Du kan bruke git tilbakestilt kommando for å fjerne en trinnvis fil:
git reset HEAD path/to/file
Kan jeg raskt angre lokale endringer?
Ja, du kan angre endringer i en lokal fil før den iscenesettes. Bruk følgende kommando:
git checkout -- bane/til/fil
Merk at dette ligner på å rulle tilbake en depotendring, det utelater bare commit-ID. Når du har utført denne kommandoen, vil Git angre eventuelle endringer i arbeidskopien din.
Hva med git restore?
Senere versjoner av Git har en nyere kommando: restaurere. For de enkle tilfellene vi har diskutert her, kan du bruke følgende ekvivalenter. For å angre en endring i depotet:
git restore --source [commit id] bane/til/fil
For å fjerne scenen en fil bruk:
git restore --stages path/to/file
Og for å angre endringer i arbeidskopi:
git gjenopprett bane/til/fil
Å mestre Gits versjonskontroll er uvurderlig
Selv om tilbakestilling av en fil kan virke som en vanlig ting å gjøre, vil du finne at det skjer ganske sjelden i praksis. Det er mer sannsynlig at du vil rulle tilbake hele forpliktelser i stedet for individuelle filer. Men i de tilfellene du trenger å gjøre det, gjør Git det i det minste ganske enkelt.
Bruk disse Git-kommandoene til å utføre operasjoner som å fjerne en fil fra en commit.
Les Neste
- Programmering
- GitHub
- Webutvikling
- Programmering
Bobby er en teknologientusiast som jobbet som programvareutvikler i det meste av to tiår. Han er lidenskapelig opptatt av spill, jobber som sjefredaktør i Switch Player Magazine, og er fordypet i alle aspekter av online publisering og nettutvikling.
Abonner på vårt nyhetsbrev
Bli med i vårt nyhetsbrev for tekniske tips, anmeldelser, gratis e-bøker og eksklusive tilbud!
Klikk her for å abonnere