Hva er forskjellen mellom tilbakestilling av git -blandet, -soft og -hard?

Hva er forskjellen mellom tilbakestilling av git -blandet, -soft og -hard?
På Git er enhver forpliktelse knyttet til den forrige forpliktelsen, og hodet peker på den siste forpliktelsen i arbeidsgrenen. Forpliktelseshistorikken lagres som et tre av forpliktelser. Noen ganger må utviklere imidlertid endre forpliktelseshistorikken. For dette formålet, "$ git reset”Kommando brukes til å endre historien til Git Repository og fikse feil som ble gjort.

Denne artikkelen vil kort forklare forskjellen mellom Git Reset -hard, -soft og -Blandet.

Hva er forskjellen mellom tilbakestilling av git -blandet, -soft og -hard?

Git gir flere tilbakestillingsalternativer. På bakgrunn av hvordan de håndterer forpliktelsene, er alle tilgjengelige alternativene forskjellige fra hverandre. De endrer alle Git -historien og beveger hodet tilbake. Dessuten håndterer de endringene annerledes, for eksempel:

  • -myk”Alternativ brukt med“$ git reset”Kommando for å oppbevare filene og returnere forpliktelsesendringene til Git -iscenesettelsesindeksen.
  • $ git reset -mixed”Brukes til å angre forpliktelsesendringene og fjerne filen fra iscenesettelsesindeksen uten å slette den fra arbeidskatalogen.
  • -hard”Alternativ med“$ git reset”Kommando brukes til å slette alle endringer og fjerne dem fra den lokale arbeidskatalogen.

La oss ta et eksempel for å se hvordan "$ git reset”Kommando fungerer med forskjellige alternativer!

Trinn 1: Gå til ønsket Git -depot

Først må du gå til ønsket Git -depot ved å bruke "CD”Kommando:

$ CD "C: \ git \ test_repo"

Trinn 2: Opprett fil

Nå, utfør den undergitte kommandoen for å opprette en fil:

$ Touch File4.tekst

Trinn 3: Legg til fil i iscenesettingsindeksen

Bruke "git add”Kommando for å legge til den nylig genererte filen i iscenesettelsesindeksen:

$ git Legg til fil4.tekst

Trinn 4: Forplikt endringer

Deretter legger du til alle endringer i arbeidsreposten ved å utføre "git forpliktelse”Kommando:

$ git commit -m "file4 lagt til"

Trinn 5: Sjekk git -loggen

Kontroller deretter Git Log -historien for å se de siste forpliktelsene som ble lagt til:

$ git log

I utgangen nedenfor kan det sees at alle de siste tilførte forpliktelsene vises, og "HODE”Peker på den nylige forpliktelsen:

Merk: For å sjekke hodets nåværende pekeposisjon på en bedre måte, utfør "git log”Kommando sammen med“-en linje" flagg:

$ git log --oneline

Nedenfor gitt utdata viser listen over Commit Sha Hash med forpliktelsesmeldinger:

Trinn 6: Bruk Git Reset -Soft -kommandoen

For å tilbakestille de ekstra endringene fra Git -depotet til iscenesettelsesindeksen, bruk "Git tilbakestilling”Kommando sammen med“-myk”Alternativ, og spesifiser ønsket hodeposisjon der det kreves for å flytte pekeren:

$ git reset -myk hode ~ 1

Trinn 7: Sjekk git -status

Kontroller nå den omvendende posisjonen til hodet, sjekk Git -depotstatusen:

$ git status

Det kan sees at “git reset -soft”Kommandoen har returnert forpliktelsesendringene til Git -iscenesettelsesindeksen. Dessuten "File4.tekst”Filen er nå i GIT -iscenesettingsindeksen og må forplikte seg:

Trinn 8: Sjekk git -loggen

For å se den nåværende posisjonen til hodet, kjør den gitte kommandoen sammen med “-en linje”Alternativ:

$ git log --oneline

Her peker hodet på “File3”Forplikt:

Trinn 9: Bruk tilbakestilling av git - Mixed Command

For å angre begått endringer og fjerne filene fra iscenesettelsesområdet uten å slette dem fra arbeidskatalogen, utfør "$ git reset -mixed”Kommando sammen med den nødvendige hovedposisjonen til forpliktelsen:

$ git reset -blandet hode ~ 1

Trinn 10: Sjekk git -status

Se de nylig lagt til endringene ved å sjekke Git Repository Status:

$ git status

Det kan observeres at de spesifiserte forpliktelsesendringene fjernes fra iscenesettelsesområdet. Imidlertid er de plassert i arbeidsområdet:

Trinn 11: Sjekk git -loggen

Sjekk Git Repository Reference Log History sammen med SHA Hash:

$ git log --oneline

Trinn 12: Bruk tilbakestilling av git - hard kommando

For å fjerne ekstra endringer fra Git Local Working Directory, utfør "$ git reset -hard”Kommando:

$ git reset - -hard head ~ 1

Trinn 13: Kontroller omvendt hodepeker

For å bekrefte hodepekeren, gå tilbake til den spesifiserte posisjonen, kjør "git log”Kommando:

$ git log --oneline

Under utgangen viser at hodet peker på “Fil1 lagt til”Forplikt:

Trinn 14: Sjekk git -status

For å se de ekstra endringene, sjekk GIT -statusen:

$ git status

Det kan sees at vi ikke har noe spor og i påvente av endringer av “File2.tekst”Fil. Derfor, fil2.TXT er fjernet fullstendig:

Trinn 15: Bekreft listen over depotinnhold

For å bekrefte depotlisten over innhold, kjør "ls”Kommando:

$ ls

Som du kan se, "File2.tekst”Filen eksisterer ikke i den gjeldende katalogen:

Vi har forklart forskjellen mellom GIT -tilbakestilling -blandet, -soft og -hard alternativer.

Konklusjon

Git tilbakestilling”Kommando brukes til å tilbakestille endringene, endre historien til Git Repository og fikse feil. “git reset -soft”Kommando holder filene og returnerer forpliktelsesendringene til Git -iscenesettelsesområdet. I kontrast til "git reset -mixedKommando angre forpliktelsen endres og fjerne filen fra iscenesettelsesindeksen uten å slette den fra arbeidskatalogen. For å slette alle endringene og fjerne dem fra Git -arbeidsområdet, "git reset -hard”Kommando kan brukes. Denne artikkelen illustrerte forskjellen mellom tilbakestilling av git -tilbakestilling, -soft og -hard.