Hvis du er en webutvikler eller en programvareingeniør, er det veldig sannsynlig at du presser mange forpliktelser til Git depot hver dag.
I noen tilfeller har du imidlertid begått noen filer som ikke skal skyves til Git-depotet.
Noen ganger kan det være lurt å utføre flere endringer før du utsteder forpliktelsen .
Som en konsekvens må du angre den siste forpliktelsen fra Git-depotet.
I denne opplæringen skal vi se hvordan du enkelt kan angre den siste forpliktelsen, kanskje for å foreta endringer på nytt senere.
Innholdsfortegnelse
Angre Last Git Commit with reset
Den enkleste måten å angre den siste Git-forpliktelsen på er å utføre «git reset» -kommandoen med «–soft» -alternativet som vil bevare endringene som er gjort i filene dine. Du må spesifisere forpliktelsen til å angre som er «HEAD ~ 1» i dette tilfellet.
Den siste forpliktelsen vil bli fjernet fra Git-historikken din.
Hvis du ikke er kjent med denne betegnelsen, betyr «HEAD ~ 1» at du vil tilbakestille HEAD (siste forpliktelse) til en forpliktelse før i logghistorikken.
Så hva er virkningen av denne kommandoen?
Kommandoen «git reset» kan sees på som det motsatte av kommandoen «git add», og legger i hovedsak til filer til Git-indeksen.
Når du spesifiserer «–soft» -alternativet, blir Git bedt om ikke å endre filene i arbeidskatalogen eller i indeksen i det hele tatt.
Som et eksempel , la oss si at du har lagt til to filer i den siste forpliktelsen, men at du vil utføre noen modifikasjoner på denne filen.
Som en konsekvens vil du bruke «git reset» med «–soft» -alternativet for å angre den siste forpliktelsen og utføre ytterligere modifikasjoner.
Som du kan se, ved å angre den siste forpliktelsen, filen er fremdeles i indeksen (endringer som skal forpliktes), men forpliktelsen ble fjernet.
Fantastisk, du har angret den siste Git-forpliktelsen på depotet ditt.
Hard Reset Git-forpliktelse
I forrige avsnitt har vi sett hvordan du enkelt kan angre den siste forpliktelsen ved å bevare endringene som er gjort i filene i indeksen.
I noen tilfeller vil du bare kvitt deg med forpliktelsen og endringene som er gjort i filene.
Dette er hensikten med alternativet «–hard».
For å angre den siste forpliktelsen og forkaste alle endringene. i arbeidskatalogen og indeksen, utfør kommandoen «git reset» med «–hard» -alternativet og spesifiser forpliktelsen før HEAD («HEAD ~ 1»).
Vær forsiktig når du bruker «–hard»: endringer blir fjernet fra arbeidskatalogen og fra indeksen, du mister alle endringer.
Tilbake til eksemplet vi har beskrevet tidligere, la oss si at du har overført en ny fil til Git-depotet ditt med navnet «file1».
La oss late som om du vil angre den siste forpliktelsen og forkaste alle modifikasjoner.
Flott, la oss nå se tilstanden til Git-depotet vårt .
Som du kan se, ble filen fullstendig fjernet fra Git-arkivet (indeks + arbeidskatalog)
Mixed reset Git commit
For å angre den siste Git-forpliktelsen, beholder du endringene i arbeidskatalogen, men IKKE i indeksen, må du bruke kommandoen «git reset» med alternativet «–blandet». Ved siden av denne kommandoen legger du ganske enkelt til «HEAD ~ 1» for den siste forpliktelsen.
Som et eksempel, la oss si at vi har lagt til en fil med navnet » file1 ”i en forpliktelse som vi trenger å angre.
For å angre den siste forpliktelsen, utfører vi ganske enkelt kommandoen» git reset «med alternativet» –blandet «.
Når du angir alternativet» –blandet «, vil filen bli fjernet fra Git-indeksen, men ikke fra arbeidskatalogen.
Som en konsekvens blir» –blandet ”Er en“ blanding ”mellom myk og hard tilbakestilling, derav navnet.
Flott! Du fant en annen måte å tilbakestille den siste forpliktelsen mens du bevarer endringene som er gjort i filer.
I neste avsnitt skal vi se en annen måte å tilbakestille den siste forpliktelsen ved hjelp av git revert-kommandoen.
Angre siste forpliktelse med tilbakeføring
For å tilbakestille den siste Git-forpliktelsen , bruk «git revert» og spesifiser forpliktelsen som skal tilbakestilles, som er «HEAD» for den siste forpliktelsen i historikken din.
Kommandoen «git revert» er litt forskjellig fra «git reset» -kommandoen fordi den vil registrere en ny kommisjon med endringene som ble introdusert ved å tilbakestille den siste kommisjonen.
Merk deg også at med «git reset ”du spesifiserte“ HEAD ~ 1 ”fordi tilbakestillingskommandoen setter en ny HEAD-posisjon mens tilbakestilling faktisk tilbakestiller den spesifiserte forpliktelsen.
Som en konsekvens må du forplikte endringene igjen for at filene skal være tilbakeført og for at forpliktelsen skal angres.
Som en konsekvens, la oss si at du har forpliktet en ny fil til Git-depotet, men at du vil tilbakeføre denne forpliktelsen.
Når du utfører kommandoen «git revert», åpner Git automatisk teksteditoren din for å utføre endringene.
Når du er ferdig med forpliktelsesmeldingen, vises en melding med den nye kommisjonen.
Nå hvis du skulle inspisere Git-historikken din igjen, vil du legge merke til at en ny forpliktelse ble lagt til for å angre den siste forpliktelsen fra depotet ditt.
Konklusjon
I denne opplæringen har du sett alle måtene å angre den siste forpliktelsen til Git-depotet ditt.
Du har lært om «git reset Kommandoen og de forskjellige måtene å utføre den på, avhengig av hva du vil beholde eller ikke.
Du har også lært om forskjellen mellom git reset og git revert kommando, sistnevnte legger til en ny kommisjon i rekkefølge for å tilbakestille den fra depotet ditt.
Hvis du er nysgjerrig på Git eller på programvare eering, vi har en komplett seksjon dedikert til det på nettstedet, så sørg for å sjekke det ut!
Hvis du liker Git, kan du like de andre artiklene våre:
- Slik kloner du et Git-arkiv
- Slik avspiller du Git-filer
- Hvordan Cherry Pick Git forplikter