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

Faktisk, når du bruker git reset, bør du referere til den commit du tilbakestiller til; så du vil sannsynligvis ha db0c078 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 å sjekke git 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.

Kommentarer (8)

Hvis du IKKE har pushet endringene dine til remote.

git reset HEAD~1

Sjekk om arbeidskopien er ren ved hjelp av git status.

Hvis du ikke har overført endringene til remote.

git revert HEAD

Denne kommandoen reverserer/fjerner den siste endringen, og deretter kan du pushe endringene til

Kommentarer (3)
git reset --hard origin/master

for å tilbakestille den til opprinnelsespunktet.

Dette ble lagt ut av @bdonlan i kommentarer. Jeg la til dette svaret for folk som ikke leser kommentarer.

Kommentarer (3)