17. Fjernelse af en forpligtelse fra en gren
Mål
- At lære at slette grenens seneste forpligtelser
Revert
er en kraftfuld kommando fra det foregående afsnit, der giver dig mulighed for at annullere eventuelle forpligtelser til arkivet. Imidlertid ses både originale og annullerede forpligtelser i historikken af grenen (når du bruger kommandoen git log
).
Ofte efter at en forpligtelse allerede er lavet, indser vi, at det var en fejltagelse. Det ville være rart at have en fortryd kommando, der gør det muligt at slette den eller de forkerte forpligtelser straks. Denne kommando forhindrer, at der vises en eller flere uønskede forpligtelser i git log
-historikken. 01 Nulstillingskommandoen
Vi har allerede brugt kommandoen reset
til at matche bufferzonen og den valgte forpligtelse (HEAD commit blev brugt i den foregående lektion).
Når der gives en henvisningsreference (dvs. en gren, et hash- eller tagnavn), vises reset
kommando vil …
- Overskriv den aktuelle gren, så den peger på den korrekte forpligtelse
- Valgfrit nulstille bufferzonen, så den overholder den angivne forpligtelse
- Valgfrit nulstille arbejdsmappen, så den svarer til den angivne forpligtelse
02 Tjek vores historie
Lad os lave en hurtig scanning af vores forpligtelseshistorik .
Kør:
git hist
Resultat:
Vi ser, at de sidste to forpligtelser i denne gren er “Ups “og” Revert Oops “. Lad os fjerne dem med kommandoen reset
.
03 Marker denne gren først
Lad os markere den sidste forpligtelse med tag, so you can find it after removing a commit(s).
Kør:
git tag oops
04 Nulstil forpligtelse til tidligere Oops
I historikloggen ovenfor er forpligtelsen, der er mærket “v1”, før “Ups” og “Revert Oops” forpligter sig. Lad os nulstille grenen til det punkt. Da grenen har et tag, kan vi bruge tagnavnet i reset-kommandoen (hvis det ikke har et tag, kan vi bruge hash-værdien).
Kør:
git reset --hard v1git hist
Resultat:
Vores masterfilial peger på commit v1, og “Revert Oops” og “Oops” forpligter findes ikke længere i grenen. --hard
-parameteren får arbejdsmappen til at afspejle det nye filialhoved.
05 Intet går nogensinde tabt
Hvad skete der med de forkerte forpligtelser? De er stadig i arkivet. Faktisk kan vi stadig henvise til dem. I begyndelsen af lektionen oprettede vi “oops” -tagget til den annullerede forpligtelse. Lad os se på alle forpligtelser.
Kør:
git hist --all
Resultat:
Det kan vi se de forkerte forpligtelser er ikke væk. De er ikke længere opført i mastergrenen, men forbliver stadig i arkivet. De ville stadig være i arkivet, hvis vi ikke taggede dem, men så kunne vi kun henvise til dem med deres hash-navne. Uhenviste forpligtelser forbliver i arkivet, indtil software til affaldsindsamling køres af systemet.
06 Nulstil farer
Nulstillinger i lokale grene er normalt uskadelige. Konsekvenserne af enhver “ulykke” kan tilbageføres ved hjælp af den korrekte forpligtelse.
Imidlertid kan andre brugere, der deler filialen, forveksles, hvis filialen deles på eksterne arkiver.