Feil er vanlige, vi gjør dem alle. Derfor setter de viskelær på blyanter. Og dette er ikke annerledes med verktøy som Git. Selv om noen endringer kan være vanskelige å angre, er det vanligvis en måte.
Så hva om du vil endre en eksisterende forpliktelsesmelding? Heldigvis er dette enkelt å gjøre i Git, men metoden kan endre seg litt avhengig av noen faktorer.
Fiks siste forpliktelse, ennå ikke skjøvet til fjernkontroll
Dette er det enkleste tilfellet siden det ikke er nødvendig å endre et eksternt depot, du trenger bare å endre ditt eget. I dette tilfellet kan du bruke følgende kommando:
$ git commit --amend
Hvis du kjører denne kommandoen, åpnes en editor der du kan endre siste forplikte melding. Når du er ferdig og lagrer/lukker redigeringsprogrammet, vil commit-meldingen bli endret.
Personlig foretrekker jeg å gjøre det meste på kommandolinjen, noe du kan gjøre ved å legge til et argument og melding til kommandoen ovenfor:
$ git commit --amend -m "Added a new file"
Å gjøre det på denne måten vil ikke åpne redigeringsprogrammet, men i stedet vil det bare endre commit-meldingen umiddelbart.
Reparer siste forpliktelse, skjøvet til ekstern
Dette er et annet vanlig tilfelle, og det er litt vanskeligere å fikse, ikke bare fordi vi må endre vårt eget depot, men vi må også modifisere det eksterne depotet, som kan være lenger fremme enn din lokale filial.
Det første trinnet er å endre den siste forpliktelsen, akkurat som vi gjorde i forrige avsnitt:
$ git commit --amend -m "Added a new file"
Deretter må du sende disse endringene til det eksterne depotet. Dette må imidlertid gjøres ved hjelp av --force
flagg.
$ git push <remote> <branch> --force
Vi må gjøre det på denne måten for å overskrive det eksterne depotet med vår egen lokale stat.
Vær oppmerksom på at ved å tvinge dyttet, vil du også gjøre det taper eventuelle forpliktelser på den lokale avdelingen som du ikke allerede har i din lokale avdeling. Fortsett forsiktig!
Sjekk ut vår praktiske, praktiske guide for å lære Git, med beste praksis, bransjeaksepterte standarder og inkludert jukseark. Slutt å google Git-kommandoer og faktisk lære den!
Hvis du kan fange feilen raskt nok, vil det ikke være noe problem å gjøre endringen. Ellers må du kanskje finne en annen løsning for å unngå å miste endringer som er gjort etter commit-meldingen du ønsker å endre.
Bruk Interactive Rebase
Et annet alternativ, som er mer fleksibelt enn de tidligere beskrevne løsningene, er å bruke en interaktiv rebase. Ved å gjøre dette kan du inspisere de siste N forpliktelsene og gjøre endringer i dem, inkludert plukking, squashing osv.
For å starte rebasen kan du bruke følgende kommando:
$ git rebase -i HEAD~n
Her n
er antallet forpliktelser du vil inspisere og redigere. Du vil da se en liste over forpliktelser, lik dette:
$ $ git rebase -i HEAD~4
pick 788ebf0 Oops, I forgot to add a new file
pick ced1329 Fixed a super critical bug
pick 5e9cdc5 Added a new file
Som du kan se er alle de siste N forpliktelsene oppført, og du kan endre meldingene deres etter behov.