Fjerne en git commit som ikke har blitt pushet
Jeg gjorde en git commit
, men jeg har ikke pushet den til depotet ennå.
Så når jeg gjør git status
, får jeg '# Din gren er foran 'master' med 1 commit.
Så hvis jeg ønsker å rulle tilbake min øverste commit, kan jeg bare gjøre det:
git reset --hard eb27bf26dd18c5a34e0e82b929e0d74cfcaab316
gitt at når jeg gjør git log
får jeg:
pre> commit eb27bf26dd18c5a34e0e82b929e0d74cfcaab316 Date: Tue Sep 29 11:21:41 2009 -0700
commit db0c078d5286b837532ff5e276dcf91885df2296 Date: Tue Sep 22 10:31:37 2009 -0700
606
3
Faktisk, når du bruker
git reset
, bør du referere til den commit du tilbakestiller til; så du vil sannsynligvis hadb0c078
commit.En enklere versjon ville være
git reset --hard HEAD^
, for å tilbakestille til forrige commit før nåværende head; på den måten slipper du å kopiere rundt commit-ID-er.Vær forsiktig når du gjør en
git reset --hard
, da du kan miste eventuelle ukommiterte endringer du har. Det kan være lurt å sjekkegit status
for å forsikre deg om at arbeidskopien din er ren, eller at du ønsker å slette eventuelle endringer som er der.I tillegg kan du i stedet for HEAD bruke
origin/master
som referanse, som foreslått av @bdonlan i kommentarfeltet:git reset --hard origin/master
.Hvis du IKKE har pushet endringene dine til remote.
Sjekk om arbeidskopien er ren ved hjelp av
git status
.Hvis du ikke har overført endringene til remote.
Denne kommandoen reverserer/fjerner den siste endringen, og deretter kan du pushe endringene til
for å tilbakestille den til opprinnelsespunktet.
Dette ble lagt ut av @bdonlan i kommentarer. Jeg la til dette svaret for folk som ikke leser kommentarer.