Slik sletter du en forpliktelse i Git

Slik sletter du en forpliktelse i Git

Å slette en commit i Git er noe du kan gjøre oftere enn du forventer. Med en så vanlig oppgave vil du sannsynligvis finne det nyttig å ha en rask guide.

Slik sletter du en forpliktelse i Git

Denne artikkelen svarer på hvordan du sletter en Git-commit og andre mulige løsninger du kan prøve. Så hvis du gjør en feil i din siste forpliktelse eller ønsker å rydde opp i repoens historie, les videre for å finne ut.

Sletting av en Commit i Git

Du kan slette en forpliktelse i Git på noen få måter. Hvis du ikke vil eller kan endre Git commit-meldingen , så er den vanligste løsningen å bruke “git reset” og “git revert” kommandoer.

For å bruke "git reset", gjør dette:

  1. Finn forpliktelsen du vil slette med git log .
    Slik sletter du en forpliktelse i Git
  2. Bruk git reset –soft [commit hash] for å angre en commit-kommando uten å "nuke" noe.
    Slik sletter du en forpliktelse i Git
  3. Eller bruk git reset –hard [commit hash] for å tilbakestille til commit før den du vil slette.
    Slik sletter du en forpliktelse i Git
  4. Bytt ut «[forplikte hash]» med hashen til forpliktelsen du målretter mot.

Alternativt kan du også bruke "git rebase -i HEAD~[Number]" for å rebase det siste antallet commits. Erstatt [nummer] med antall forpliktelser. Git vil vise deg en fil som du kan redigere og fjerne forpliktelsen du ønsker å være borte. Gjør dette bare hvis du ikke allerede har forpliktet deg.

Dette er en enkel metode på overflaten, men vær forsiktig. Den fjerner permanent alle endringer i forpliktelsene etter den du tilbakestiller den til, så vær sikker på at dette er akkurat det du vil ha.

Alternativt kan du bruke "git revert" slik:

  1. Hvis du vil beholde endringene i arbeidskatalogen din, bruk git revert [commit hash] . Denne kommandoen oppretter en ny commit som angrer endringene fra commit du angir.
    Slik sletter du en forpliktelse i Git
  2. Etter å ha gått tilbake, skyv endringene til det eksterne depotet med git push .
    Slik sletter du en forpliktelse i Git

Her er et annet alternativ, i tilfelle du ønsker å slette flere, spesifikke forpliktelser:

  1. Bruk git checkout [last commit hash] for å sjekke den siste commit som skal forbli.
    Slik sletter du en forpliktelse i Git
  2. Lag en ny gren med git checkout -b repair .
    Slik sletter du en forpliktelse i Git
  3. Kjør git cherry-pick [spesifikk commit hash] på den første commit du vil bevare.
    Slik sletter du en forpliktelse i Git
  4. Gjenta for de andre forpliktelsene du ønsker å bevare.
  5. Kjør git checkout master til checkout master.
    Slik sletter du en forpliktelse i Git
  6. Tilbakestill master til siste brukbare commit med git reset –hard [last commit hash] .
    Slik sletter du en forpliktelse i Git
  7. Slå sammen den nye grenen for å mestre med git merge repair .
    Slik sletter du en forpliktelse i Git
  8. Kjør deretter git push -f origin master for å skyve til fjernkontrollen.
    Slik sletter du en forpliktelse i Git

Når bør du slette forpliktelser

Det er noen få situasjoner når fjerning av en forpliktelse er den beste tingen å gjøre. Her er noen av dem.

Dårlig kode

En av de vanligste grunnene til at du ønsker å bli kvitt en forpliktelse er fordi koden i den rett og slett ikke klipper den. Kanskje du har gjort en feil og ønsker å begynne på nytt, eller kanskje du har innsett at resultatet ikke stemmer overens med det du prøver å oppnå. Du kan for eksempel ha lagt til en funksjon som er i konflikt med en annen del av koden din. Hvis du sletter denne forpliktelsen, kan du gå tilbake, fikse problemet og deretter foreta den korrigerte versjonen på nytt.

Hvis du nettopp har begått en kodebit og så oppdaget en åpenbar feil, for eksempel en feil eller et kodestykke som ikke skulle ha vært der, men du har ikke tid til å fikse det – det er en god grunn for å slette forpliktelsen. I stedet for å la denne unødvendige eller mangelfulle kodebiten sitte i prosjektets historie (og potensielt forårsake forvirring eller til og med katastrofale feil i feilrettingen), kan du slette den forpliktelsen. Å gjøre det holder prosjektet ditt rent.

Sensitive data

Å begå sensitive data ved et uhell skjer oftere enn du kanskje tror. Ikke overraskende kan det være en betydelig sikkerhetsrisiko, enten det er personlig eller bedriftsmessig. Alt fra passord og API-nøkler til personlig informasjon kan snikende havne i forpliktelsen din. Og når den først er der ute i prosjektrommet, kan hvem som helst få tilgang til den og potensielt bryte din eller teamets sikkerhet.

Disse ulykkene er kanskje enda bedre grunner til å slette en commit enn bare dårlig kode. Du kan redigere feil kode og ikke bekymre deg for at den forblir i prosjekthistorikken, men dette er ikke en risiko du vil ta med sensitive data. For eksempel, hvis du ved et uhell begår en fil som inneholder API-nøkler, vil fjerning av denne commit forhindre at denne nøkkelen faller i feil hender.

Holde historien ren

En annen solid grunn til å slette en Git-forpliktelse er å holde prosjekthistorikken ren og enkel. Etter hvert som du jobber med prosjektet, blir forpliktelseshistorikken din stadig mer rotete med mindre oppdateringer, eksperimenter eller endringer som ikke lenger er relevante. Når du vil se gjennom historien av en eller annen grunn, for eksempel å finne ut hvorfor du gjorde en viss endring eller gå tilbake til en stabil tilstand etter et eksperiment, kan en rotete historie bli et problem.

Ved å slette unødvendige forpliktelser holder du prosjekthistorikken din ryddig og enkel for deg og andre i teamet ditt å følge. Det er enda mer nyttig før du slår sammen en filial, slik at du kan presentere en klar, kortfattet og relevant historie for den som vurderer koden din. For eksempel, hvis du har flere commits som bare var små justeringer av en funksjon, kan det være lurt å squash dem inn i en enkelt commit for å holde historien din pen.

Beste praksis og tips

Før du sletter en forpliktelse, følg noen beste fremgangsmåter for å holde prosjektet ditt funksjonelt og unngå utilsiktede konsekvenser.

Sikkerhetskopier arbeidet ditt

Før du sletter en commit i Git, er det en god idé å sikkerhetskopiere arbeidet ditt, selv om du tror det kan være verdiløst å beholde. Det kan virke som ekstraarbeid, men en backup er et sikkerhetsnett i tilfelle ting ikke går som planlagt.

Du kan opprette en sikkerhetskopi ved å lage en ny gren som gjenspeiler depotets nåværende tilstand. For eksempel, før du sletter en commit som introduserte en ny funksjon, oppretter du en sikkerhetskopigren "funksjonssikkerhetskopiering." Det vil gi deg friheten til å eksperimentere og slette forpliktelser uten frykt for å miste viktig arbeid. Så hvis du senere innser at du trenger noe fra den slettede commit, har du ikke mistet det for alltid. Hvis du bestemmer deg for at du ikke lenger trenger den sikkerhetskopien, kan du slette Git-grenen .

Ikke slett offentlige forpliktelser

Når du arbeider med offentlige depoter, spesielt i åpen kildekode-prosjekter eller teammiljøer, bør du være ekstra forsiktig med å slette forpliktelser. Når en forpliktelse er presset til et offentlig depot og andre har hentet den, kan sletting av forpliktelsen forvirre eller distrahere alle involverte og forstyrre arbeidet. Det er en form for å trekke et teppe ut under noen – ikke en hyggelig opplevelse, men heller hensynsløs. Hvis du må slette en forpliktelse som allerede er offentlig, fortell teamet eller prosjektbidragsyterne på forhånd slik at de vet hva som skjer. På denne måten er alle bevisste og kan justere arbeidet sitt deretter.

Bruk Revert for Public Repos

Hvis du fortsatt vil angre endringer i et offentlig depot, i stedet for å slette en commit permanent, kan du tilbakestille en sammenslåing i Git . I motsetning til git-reset, som effektivt omskriver historien, skaper "git revert" en ny commit som angrer endringene som er gjort i en tidligere commit.

Derfor er bruk av denne kommandoen mye tryggere og mer gjennomsiktig, spesielt når du jobber med andre. Du kommuniserer åpent til teammedlemmene dine at du kan ha gjort en feil og gir tilbake en forpliktelse som fikser det. Hvis du presset en commit med en betydelig feil, lar "git revert" deg raskt fjerne effekten av den feilen mens du holder prosjektets historie intakt. Å gjøre det opprettholder prosjekthistorikkens integritet og holder alles lokale depot i samsvar med fjernkontrollen.

Dobbeltsjekk før du sletter

En av de største risikoene når du sletter forpliktelser i Git er å miste tiden og kreftene du legger ned på forpliktelsen. For å forhindre dette, se gjennom alle endringene i hver commit du vil fjerne. Bruk "git log or git show [commit hash]" for å inspisere forpliktelsene. Hvis du fjerner en commit som har lagt til flere funksjoner i koden din, sørg for at prosjektet ditt ikke trenger disse funksjonene for å fungere eller at de er replikert andre steder.

Forplikter seg til det

Det er mange grunner til å slette en commit på Git, som å holde historien din ryddig, angre forvirrende feil eller holde sensitiv informasjon trygg fra nysgjerrige øyne. Uansett årsak, husk at det er to måter å gjøre det på – "git reset" og "git revert", som hver tjener et annet formål, så velg den som passer for prosjektet ditt. Du kan også gi nytt navn til Git-grenen for ytterligere klarhet.

Har du noen gang måttet slette en commit i Git? Hva var din erfaring, og har du noen tips å dele? Legg igjen en kommentar nedenfor og fortsett samtalen.


Hvordan fikse CapCut Reverse som ikke fungerer

Hvordan fikse CapCut Reverse som ikke fungerer

Det er mange grunner til at du kanskje elsker å filme og redigere. Du kan filme steder du har besøkt, folk du er glad i, og fange et hvilket som helst spesielt øyeblikk du ønsker

ISperm lar deg sjekke sæden din ved hjelp av en IPad

ISperm lar deg sjekke sæden din ved hjelp av en IPad

Du har hatt en hard dag på jobben. Du setter opp iPaden på salongbordet. Du ser litt Netflix, lukker gardinen, analyserer sædcellene dine, sjekker Twitter

Parrots Disco Drone tar papirfly til neste nivå

Parrots Disco Drone tar papirfly til neste nivå

Tenk på en drone, og du vil tenke på et summende quadcopter som svever over en park. Det, eller krig. Men fire motorer er så 2015, ser det ut til, som drone

Du kan hjelpe Crowdfund en statue av verdens første romkatt

Du kan hjelpe Crowdfund en statue av verdens første romkatt

Ukens kickstarter: En statue av Félicette, den første katten i verdensrommet Laika, den første hunden i verdensrommet, har en statue i Moskva. Skinke, astrochimpen

Hvordan sjekke hvem som eier en fil i Linux

Hvordan sjekke hvem som eier en fil i Linux

Hvis du vil sjekke hvem som eier en fil, fungerer Linux veldig annerledes enn andre systemer. Det er ingen mulighet til å bare høyreklikke på en fil og gå til Egenskaper

Slik diagnostiserer og fikser du en Xbox-kontroller som ikke lader

Slik diagnostiserer og fikser du en Xbox-kontroller som ikke lader

Spillere elsker Xbox-konsoller for deres bakoverkompatibilitet, noe som betyr at spillere kan bruke eldre tilbehør på de nyere konsollene. Med utgivelsen av Xbox

Slik bruker du din egen ruter med Verizon Fios

Slik bruker du din egen ruter med Verizon Fios

Hvis du bruker Verizon som internettleverandør og har din egen ruter, må ideen om å droppe den leide Verizon-ruteren ha krysset tankene dine. Ved hjelp av

Kan ikke dele innlegg på Instagram-historien – hvorfor ikke?

Kan ikke dele innlegg på Instagram-historien – hvorfor ikke?

Instagram har en rekke funksjoner som lar oss kommunisere med andre kontoer på plattformen. Det kan imidlertid hende at de ikke alltid fungerer som de skal

Fire Tablet: Siste generasjoner

Fire Tablet: Siste generasjoner

Den siste generasjonen av Amazon Fire Tablet kommer med noen flotte funksjoner for å holde hele familien underholdt. Med nye modeller som lanseres

Slik legger du til fotnoter i et Google-dokument

Slik legger du til fotnoter i et Google-dokument

Oppdatert 23. november 2022 av Steve Larner. Fotnoter i Google Dokumenter er en fin måte å legge til kommentarer, sitere referanser eller til og med gi en lenke til kilder i