17. Fjerne en forpliktelse fra en gren

Mål

  • For å lære å slette grenens siste forpliktelser

Revert er en kraftig kommando fra forrige avsnitt som lar deg avbryte eventuelle forpliktelser til depotet. Imidlertid er både originale og kansellerte forpliktelser sett i historien av grenen (når du bruker git log -kommandoen).

Ofte etter at en forpliktelse allerede er gjort, innser vi at det var en feil. Det ville være hyggelig å ha en angre kommando som gjør at feil (er) kan slettes umiddelbart. Denne kommandoen forhindrer at det vises en eller flere uønskede forpliktelser i git log -historikken.

01 Tilbakestillingskommandoen

Vi har allerede brukt reset -kommandoen for å matche buffersonen og den valgte forpliktelsen (HEAD-forpliktelse ble brukt i forrige leksjon).

Når en kommisjonsreferanse er gitt (dvs. en gren, et hash eller et kodenavn), blir reset kommando vil …

  1. Overskriv den nåværende grenen slik at den vil peke på riktig forpliktelse
  2. Valgfritt tilbakestill buffersonen slik at den overholder den angitte forpliktelsen
  3. Tilbakestill arbeidskatalogen eventuelt slik at den samsvarer med den angitte forpliktelsen

02 Sjekk historikken vår

La oss gjøre en rask skanning av vår forpliktelseshistorikk .

Kjør:

git hist

Resultat:

Vi ser de to siste forpliktelsene i denne grenen er «Ups «og» Revert Oops «. La oss fjerne dem med kommandoen reset.

03 Merk denne grenen først

La oss merke den siste forpliktelsen med tag, so you can find it after removing a commit(s).

Kjør:

git tag oops

04 Tilbakestill forpliktelse til forrige Oops

I historikkloggen over, forpliktelsen merket «v1» er før «Oops» og «Revert Oops» forplikter seg. La oss tilbakestille grenen til det punktet. Siden grenen har en tag, kan vi bruke taggenavnet i reset-kommandoen (hvis den ikke har en tag, kan vi bruke hash-verdien).

Kjør:

git reset --hard v1git hist

Resultat:

Vår hovedgren peker på commit v1 og «Revert Oops» og «Oops» forplikter eksisterer ikke lenger i grenen. --hard -parameteren får arbeidskatalogen til å reflektere det nye avdelingshodet.

05 Ingenting går noen gang tapt

Hva skjedde med feil forpliktelser? De er fortsatt i depotet. Egentlig kan vi fortsatt henvise til dem. På begynnelsen av leksjonen opprettet vi «oops» -koden for den kansellerte forpliktelsen. La oss se på alle forpliktelser.

Kjør:

git hist --all

Resultat:

Vi kan se at feil forpliktelser er ikke borte. De er ikke oppført i hovedgrenen lenger, men forblir fortsatt i depotet. De ville fortsatt være i depotet hvis vi ikke merket dem, men da kunne vi bare referere til dem med deres hash-navn. Ikke-henviste forpliktelser forblir i depotet til søppeloppsamlingsprogramvaren kjøres av systemet.

06 Tilbakestill farer

Tilbakestillinger i lokale filialer er vanligvis ufarlige. Konsekvensene av en hvilken som helst «ulykke» kan tilbakestilles ved å bruke riktig kommisjon.

Imidlertid kan andre brukere som deler filialen forvirres hvis grenen deles på eksterne lagringssteder.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *