Git Succinctly Opptak Endringer

Opprettholdelse av en rekke "sikre" revisjoner av et prosjekt er kjernefunksjonen til et hvilket som helst versjonskontrollsystem. Git oppnår dette ved opptak snapshots av et prosjekt. Etter at du har tatt opp et øyeblikksbilde, kan du gå tilbake og se gamle versjoner, gjenopprette dem og eksperimentere uten frykt for å ødelegge eksisterende funksjonalitet.

SVN og CVS-brukere bør merke seg at dette er fundamentalt forskjellig fra systemets implementering. Begge disse programmene registrerer diffs for hver fil - en inkrementell oversikt over endringene i et prosjekt. I kontrast er Gits øyeblikksbilder bare det-snapshots. Hver forpliktelse inneholder den komplette versjonen av hver fil den inneholder. Dette gjør Git utrolig raskt siden tilstanden til en fil ikke trenger å bli generert hver gang den blir bedt om det:


Opptak fullstendige øyeblikksbilder, ikke forskjeller mellom revisjoner

Dette kapittelet introduserer den grunnleggende arbeidsflyten for å lage øyeblikksbilder ved hjelp av arbeidskatalogen, staging-området og engasjert historie. Dette er kjernekomponentene i Git-basert revisjonskontroll.


The Staging Area

Gits staging-område gir deg et sted å organisere en forpliktelse før du legger den til prosjekthistorikken. staging er prosessen med å flytte endringer fra arbeidskatalogen til det iscenesatte øyeblikksbildet.


Komponenter involvert i å sette opp en forpliktelse

Det gir deg muligheten til å velge og velge i slekt endrer seg fra arbeidskatalogen, i stedet for å forby alt alt på en gang. Dette betyr at du kan opprette logisk øyeblikksbilder over kronologisk seg. Dette er en velsignelse for utviklere fordi det lar dem skille kodende aktiviteter fra versjonskontrollaktiviteter. Når du skriver funksjoner, kan du glemme å stoppe for å begå dem i isolerte biter. Da, når du er ferdig med kodingsøkten din, kan du skille endringer inn i så mange som du vil, via scenen.

For å legge til nye eller endrede filer fra arbeidskatalogen til staging-området, bruk følgende kommando:

 git add 

Hvis du vil slette en fil fra et prosjekt, må du legge til det i staging-området, akkurat som en ny eller endret fil. Den neste kommandoen vil forandre slettingen og stoppe sporing av filen, men den vil ikke slette filen fra arbeidskatalogen:

 git rm - cached 

Inspisere scenen

Vise statusen til depotet ditt er en av de vanligste handlingene i Git. Følgende kommando utfører tilstanden til arbeidskatalogen og stagingområdet:

 git status

Dette vil resultere i en melding som ligner på følgende (visse deler kan utelates avhengig av lagringsplassen din):

 # På grenmester # Endringer som skal forpliktes: # # Ny fil: foobar.txt # # Endringer som ikke er innstilt for commit: # # endret: foo.txt # # Untracked files: # # bar.txt

Den første delen, "Endringer som skal forpliktes", er ditt iscenesatte øyeblikksbilde. Hvis du skulle løpe git commit akkurat nå vil bare disse filene bli lagt til prosjekthistorikken. Neste avsnitt lister spores filer som ikke vil bli inkludert i neste forpliktelse. Endelig inneholder "Untracked Files" filer i arbeidskatalogen din som ikke er lagt til i depotet.

Genererer Diffs

Hvis du trenger mer detaljert informasjon om endringene i arbeidskatalogen eller staging-området, kan du generere en diff med følgende kommando:

 git diff

Dette gir en diff av hver unstaged endre i arbeidskatalogen din. Du kan også generere en diff av alle iscenesatt endres med --bufret flagg:

 git diff - cached

Merk at prosjekthistorikken ligger utenfor omfanget av git status. For å vise engasjert øyeblikksbilder, trenger du git logg.


Komponenter i omfanget av git status

inger

Forpliktelser representerer hver lagret versjon av et prosjekt, noe som gjør dem til atomenergien av Git-basert versjonskontroll. Hver forpliktelse inneholder et øyeblikksbilde av prosjektet, brukeropplysningene dine, datoen, en meldingsmelding og en SHA-1 sjekksum av hele innholdet:

 forplikte b650e3bd831aba05fa62d6f6d064e7ca02b5ee1b Forfatter: john  Dato: ons 11 januar 00:45:10 2012 -0600 Noen forpliktelser

Denne sjekksummen tjener som en forpliktelses unike ID, og ​​det betyr også at en forpliktelse vil aldri være skadet eller utilsiktet endret uten at Git vet om det.

Siden staging-området allerede inneholder den ønskede endringen, krever det ikke involvering fra arbeidskatalogen.


Komponenter involvert i å begå et øyeblikksbilde

For å begå det scenerte øyeblikksbildet og legge det til historien til den nåværende grenen, utfør følgende:

 git commit

Du vil bli presentert med en tekstredigerer og bedt om en "commit-melding". Forstå meldinger bør ta følgende skjema:

   

Git bruker den første linjen for formatering av loggutgang, e-postoppdateringer, etc., så det skal være kort, mens det fortsatt beskrives hele endringssettet. Hvis du ikke kan komme opp med sammendragslinjen, betyr det sannsynligvis at din forpliktelse inneholder for mange uavhengige endringer. Du bør gå tilbake og dele dem opp i forskjellige forpliktelser. Oppsummeringen bør følges av en tom linje og en detaljert beskrivelse av endringene (for eksempel hvorfor du gjorde endringene, hvilket billettnummer det tilsvarer).


Inspeksjonsforpliktelser

Som et repositorys status er visning av historien en av de vanligste oppgavene i Git versjonskontroll. Du kan vise gjeldende grenens forpliktelser med:

 git logg

Vi har nå de eneste to verktøyene vi trenger for å inspisere alle komponenter i et Git-depot.


Output of git status vs. git logg

Dette gir oss også en naturlig gruppering av kommandoer:

  • Stage / Arbeidsregister: git add, git rm, git status
  • Forpliktet historie: git commit, git logg

Nyttige konfigurasjoner

Git gir en mengde formateringsalternativer for git logg, noen av disse er inkludert her. For å vise hver forpliktelse på en enkelt linje, bruk:

 git logg --online

Eller, for å målrette historien til en individuell fil i stedet for hele depotet, bruk:

 git logg --online 

Filtrering av loggutgangen er også veldig nyttig når historien din vokser utover en skyggefull forpliktelse. Du kan bruke følgende for å vise forbud inneholdt men ikke i . Begge argumentene kan være en commit ID, et filnavn eller en tag:

 git logg ... 

Endelig kan du vise en diffstat av endringene i hvert commit. Dette er nyttig for å se hvilke filer som ble påvirket av en bestemt forpliktelse.

 git logg - stat

For å visualisere historien, vil du kanskje også se på gitk kommando, som egentlig er et eget program dedikert til å tegne grener. Løpe git hjelp gitk for detaljer.


Merking Commits

Etiketter er enkle poeng å forplikte seg, og de er utrolig nyttige for bokmerke viktige revisjoner som offentliggjøring. De git tag Kommandoen kan brukes til å opprette en ny kode:

 git tag -a v1.0 -m "Stabil release"

De -en alternativet forteller Git å opprette en annotert tag, som lar deg ta opp en melding sammen med den (spesifisert med -m).

Hvis du kjører samme kommando uten argumenter, vises de eksisterende kodene dine:

 git tag

Denne leksjonen representerer et kapittel fra Git Succinctly, en gratis eBok fra teamet på Syncfusion.