Hvordan gi angre siste commit

Hvordan gi angre siste commit

Som programvareingeniør eller webutvikler kan vi kreve å skyve mange forpliktelser til Git-depotet vårt.

Imidlertid er det noen andre tilfeller der vi ønsker å forplikte filene som ikke vil bli presset til Git-depotet vårt. Før vi utsteder noen forpliktelse, kan det hende vi ønsker å implementere noen ekstra endringer noen ganger.

Som en effekt krever vi å angre den siste forpliktelsen gjennom vårt Git-lager. Vi vil se hvordan vi kan angre den siste forpliktelsen i dette emnet.

Angre Last Git Commit sammen med en tilbakestilling

Vi kan enkelt angre den siste git-commit ved å utføre kommandoen, dvs. 'git reset' sammen med et alternativ, dvs. '-myk' som vil beskytte alle endringene som er gjort i filene våre. Vi må beskrive forpliktelsen til å angre som er 'HEAD~1'.

Den siste commit av git vil bli slettet fra vårt Git repository.

 $ git reset --soft HEAD~1  

I denne notasjonen,

'HEAD~1': Det betyr at vi ønsker å tilbakestille denne HEAD til en enkelt commit før i loggens historie.

 $ git log --oneline 3fad532 Last commit (HEAD) 3bnaj03 Commit before HEAD (HEAD~1) Vcn3ed5 Two commits before HEAD (HEAD~2)  

Hva blir effekten av kommandoen ovenfor?

Kommandoen, dvs. 'git reset' kan sees på som en kommando, dvs. motsatt av 'git add' , egentlig setter inn filer i Git-indeksen.

Hvis du beskriver muligheten for '-myk' , Git vil ikke endre filene i indeksen eller den kjørende katalogen i det hele tatt.

For eksempel har vi inkludert to filer i vår nylige forpliktelse, selv om vi ønsker å implementere noen endringer i denne filen.

 $ git log --oneline --graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 Second commit *7083e29 Initial repository commit  

Som et resultat vil vi søke 'git reset' sammen med muligheten til '-myk' å angre den siste forpliktelsen og også implementere noen tilleggsendringer.

 $ git reset --soft HEAD~1 $ git status  

Over grenmesteren

Vår filial er master/origin ahead ved commit 1 (bruk 'git push' for å publisere våre lokale commits).

Endringer som skal foretas:

 (apply 'git restore --staged …' to unstage)  

ny fil: fil1

 $ git log --oneline --graph *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit  

Som vi kan se, er filen fortsatt i indeksen ved å angre den siste commit (endringer som skal begås) selv om commit ble slettet.

Vi har gjort den siste commit på depotet vårt.

Hard Reset Git commit

Vi kan vurdere i avsnittet ovenfor at vi enkelt kan angre den siste forpliktelsen og behold endringene gjort til en hvilken som helst fil i indeksen. Men i noen situasjoner ønsker vi ganske enkelt å fjerne endringene og forpliktelsene som er gjort til enhver fil.

Det er et mål med et alternativ, dvs. '-hard' .

For å angre den siste commit og fjerne hver endring i indeksen og katalogen, utfør en kommando, dvs. 'git reset' sammen med alternativet, dvs. '-hard' og beskriv en commit før kommando HEAD ('HEAD~1') .

 $ git reset --hard HEAD~1  

Hver commit og modifikasjon vil bli fjernet fra indeksen og katalogen etter bruk av '--hard' kommando. Så vi bør være forsiktige.

For eksempel har vi lagt inn en hvilken som helst ny fil kalt 'file1' til vårt Git-lager.

 $ git log --oneline --graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit  

Anta nå at vi ønsker å angre den siste forpliktelsen og fjerne hver endring.

 $ git reset --hard HEAD~1  

Nå er HEAD på 90f8bb1 Second commit

La oss nå sjekke tilstanden vår for git-depot.

 $ git status  

Over grenmesteren

Vår filial er moderne med master/origin (bruk 'git push'-kommando for å publisere våre lokale forpliktelser).

Nå er det ingenting å forplikte seg til, og arbeidstreet er rent.

Mixed Reset Git commit

Hold endringene i arbeidskatalogen vår, men IKKE i indeksen. Vi må bruke kommandoen, dvs ., 'git reset' sammen med alternativet, dvs. '-blandet' . Etter denne kommandoen må vi bare legge til 'HEAD~1' til den siste commit.

 $ git reset --mixed HEAD~1  

For eksempel har vi inkludert enhver fil med navnet 'file1' i enhver commit som vi trenger å angre.

 $ git log --oneline --graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit  

Ganske enkelt, vi utfører kommandoen, dvs. 'git reset' sammen med alternativet, dvs. '-blandet' for å angre den siste forpliktelsen.

Som et resultat har '-blandet' kommandoen er en 'blande' blant de harde og myke tilbakestillingene, så navnet.

Over grenmesteren

Vår filial er master/origin ahead ved commit 1 (bruk 'git push' for å publisere våre lokale commits).

Usporede filer: (bruk 'git add ...' for å legge til i det som vil forplikte)

 file1  

Ingenting inkludert for committing, men de usporede filene er tilstede (bruk 'git track' for sporing).

Så vi har oppdaget en annen praksis for å tilbakestille den siste commit ved å bevare modifikasjoner gjort på filene.

Angre siste forpliktelse sammen med tilbakestilling

Bruk kommandoen, dvs. 'git tilbake' og beskriv en forpliktelse som skal tilbakeføres, dvs. 'HODE' til historiens forpliktelse for å tilbakestille den siste Git-forpliktelsen.

 $ git revert HEAD  

Kommandoen 'git revert' er annerledes sammenlignet med kommandoen 'git reset' fordi den kan registrere enhver ny commit sammen med noen modifikasjoner definert ved å degenerere den siste commit.

Vi kan beskrive 'HEAD~1' med 'git reset'-kommandoen fordi denne tilbakestillingskommandoen vil sette et hvilket som helst nytt HEAD-sted mens den degenererte commit-en beskrevet.

Som et resultat vil vi forplikte endringene på nytt til noen filer for tilbakestilling og forplikte oss til å ikke utføres. Vi har lagt inn en ny fil for vårt Git-lager, men vi ønsker å degenerere denne forpliktelsen.

 $ git log --oneline -graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit  

Hvis du utfører kommandoen 'git revert', vil Git åpne tekstredigeringsprogrammet vårt for å utføre endringene automatisk.

Hvordan gi angre siste commit

En ny melding vil vises sammen med en ny commit-hash når vi er ferdige med å utføre en commit-melding.

 [master 2d40a2c] Revert 'Added a new file named as file1' 1 file changed, 1 deletion(-) delete mode 100644 file1  

Hvis vi må sjekke historien til Git igjen, kan vi legge merke til en ny forpliktelse som er lagt til for å angre den siste forpliktelsen gjennom depotet vårt.

 $ git log --oneline --graph *2d40a2c (HEAD -> master) Revert 'Added a new file named file1' *1fa26e9 Added a new file named as file1 *ee8b133 Second commit *a3bdedf Initial commit