Hvordan inspisere et projekts historie med Git -logg

Hvordan inspisere et projekts historie med Git -logg

En av de mest grunnleggende tjenestene fra Git er prosjekthistorikken. Siden Git holder oversikt over alle endringer i filer som er gjort i et depot, kan det tilby svært kraftige loggfunksjoner. Du kan søke etter et projekts historie på mange forskjellige måter, og du kan trekke ut og vise forskjellige data ved hjelp av en fleksibel kommando.





De git -logg kommandoen er enorm, den største av noen vanlig Git -kommando. Håndboken er over 2500 linjer lang. Heldigvis, git -logg gir mye av sin mest nyttige oppførsel fra bare noen få viktige alternativer.





Grunnleggende logging med standardatferd

Som standard er git -logg viser en omvendt-kronologisk liste over forpliktelser. Hver forpliktelse inneholder hash, forfatter, dato og forpliktelsesmelding:





Kommandoen bruker en personsøker (f.eks. Mindre, mer) for å vise hele utgangen, slik at du enkelt kan navigere i resultatene. Du kan konfigurere Git til å bruke et program du ønsker, for eksempel den mest personsøkende.

Her er noen git -logg -utdata fra depotet til git -kildekoden seg selv:



commit 670b81a890388c60b7032a4f5b879f2ece8c4558 (HEAD -> master, origin/next,
origin/master, origin/HEAD)
Author: Junio C Hamano
Date: Mon Jun 14 13:23:28 2021 +0900
The second batch
Signed-off-by: Junio C Hamano

Resultatet starter med commit hash ( 670 ...) etterfulgt av en liste over grener som for øyeblikket peker på denne forpliktelsen ( HOVED -> mester , etc.)

hvordan sette en gif som bakgrunn

Den neste linjen beskriver forfatteren av denne forpliktelsen, med navn og e -postadresse.





Full dato og klokkeslett for forpliktelsen følger på neste linje.

Til slutt vises hele innholdet i forpliktelsesmeldingen. Du kan kontrollere det meste av alt annet som git-loggen tilbyr med kommandolinjealternativer. Det er to hovedtyper alternativer:





  • Formatering, som definerer hvordan Git viser hver forpliktelse.
  • Filtrering, som definerer hvilke som forplikter seg git -logg inkluderer.

I tillegg til kommandolinjealternativer, godtar git logg argumenter som spesifiserer filer, forplikter, grener eller andre typer referanser. Disse gjelder ytterligere filtrering.

Formatering av Git Log Output

En av de enkleste justeringene er --en linje alternativ som gir en veldig kort utgang:

git log --oneline

Hver linje i loggen inneholder nå bare en forkortet commit hash og emnet for commit -meldingen. Dette er en utmerket måte å få en oversikt over de siste forpliktelsene til prosjektet:

Dessverre, uten noen annen kontekst, er denne informasjonen ikke alltid så nyttig. Det kan gi deg en vag oppfatning av prosjektet, men det mangler datoer og annen nyttig informasjon om forfattere og filer.

Vise en grengraf

De --kurve alternativet lar deg visualisere forhold mellom grener. Det er veldig grunnleggende, men kan hjelpe til med å løse en komplisert historie.

git log --oneline --graph

I slekt: Hvordan lage en ny gren i Git

Tilpasset pen utgang

Du kan oppnå mer komplisert formatering ved å spesifisere den i detalj ved hjelp av --ganske alternativ. Syntaksen går fra veldig enkel til mye mer kompleks, så se en manual for fullstendige detaljer .

hvordan stoppe en fra å få tilgang til datamaskinen min eksternt
git log --pretty=short

Er egentlig det samme som git -logg uten dato eller full melding:

git log --pretty=oneline

Er tilsvarende git logg -online .

git log --pretty=fuller

Inkluderer mange detaljer. Det skiller til og med forfatter og forpliktelse som i teorien kan være forskjellige mennesker:

Med format: variant, kan du levere en streng som inneholder det innholdet du ønsker, inkludert plassholdere som erstattes av forskjellige data. Her er noen eksempler på plassholdere:

  • %H begå hasj
  • %t forkortet commit hash
  • %til forfatterdato
  • %Med forfatterdato, slektning
  • %s begå meldingsemne
  • % b forplikte meldingskroppen
  • %s forkortede forelesninger

Du kan legge til faste tegn i utdataene og fargelegge det. Dette eksemplet viser også en variant av datoformat:

git log --pretty=format:'%C(auto) %h [%ad] %s' --date=short

Vær oppmerksom på at parenteser omgir datoen. Uansett hvilken formatering du velger, hvis du vil at utskriften skal være nyttig i en rørledning eller for andre former for tekstbehandling, bør du vurdere hvordan du avgrenser hver del av utgangen.

Viser differanser i loggen

En viktig detalj når man ser på et depots historie er forskjellene selv. De representerer det som faktisk er endret i koden! Til å begynne med kan du få et sammendrag av endringer ved siden av hver forpliktelse --shortstat :

git log --shortstat

Dette legger til en linje som:

1 file changed, 48 insertions(+), 2 deletions(-)

Til bunnen av hver forpliktelse. Du vil ofte se denne typen sammendrag - for eksempel på sider på GitHub - og det er en nyttig måte å raskt bedømme omfanget av en bestemt forpliktelse på. For mer detaljert informasjon, kan du inkludere full patch -utgang (diffs) ved hjelp av -s flagg:

git log -p

Filtrering av Git Log Output

Uansett hvilken formatering du bruker, ser du fortsatt den komplette loggen over alle forpliktelser i den nåværende grenen. Selv om Git deler dem opp i sider, kan det fortsatt være mye output. Følgende alternativer lar deg tilpasse hvilke forpliktelser loggen inneholder.

Begrensning etter beløp

Hvis du bare vil trimme resultatene for å vise de siste forpliktelsene, bruker du -[Nummer] syntaks:

git log -2

Begrensning etter dato

For å begrense settet med forpliktelser til et gitt datointervall, bruk --siden ( --etter ) og --før ( --før ) alternativer. Disse tar hver en dato i ISO 8601 -format. Du kan bruke enten --siden eller --før alene eller begge sammen for å angi et område. Alternativene --etter og --før er synonymer.

git log --since='2021-01-01' --until='2021-05-01'

Begrensning etter fil

Git -logg kan fokusere på en bestemt fil i stedet for hver fil i depotet ditt. Dette er flott for å hjelpe deg med å finne ut hvordan en bestemt fil har endret seg over tid. Bare legg til filnavnet til slutten av git -kommandoen:

git log filename

Du ser bare de forpliktelsene som påvirket filnavn .

Forskjeller mellom grener

Du kan ha noen unike krav når du ser loggen til en gren. For eksempel, i stedet for å se hele historien, vil du kanskje bare se hva som er endret i den spesifikke grenen. Git -logg kan hjelpe via ref1..ref2 syntaks. Det er tre litt forskjellige tilnærminger du kan bruke:

  1. Se forpliktelser som er hovedsakelig, men ikke filial: | _+_ |
  2. Se forpliktelser som er i filial, men ikke hoved: | _+_ |
  3. Vis forpliktelser som bare eksisterer i gren eller hoved: | _+_ |

Forskjeller mellom to tagger

Akkurat som du kan se historikk mellom grener ved hjelp av ref1..ref2 syntaks, kan du også se historikk mellom tagger på samme måte. Tross alt er både tagger og grener referansetyper.

git log --oneline origin/branch..origin/main

Hvis du forbereder utgivelsesnotater for et større prosjekt, git shortlog burde være din første anløpshavn. Den produserer en liste over forfattere med engasjerte emner ved siden av dem. Du kan gi det et referanseområde for å begrense historien på lignende måte som git -logg:

git log --oneline origin/ main ..origin/ branch

De git show -kommando er enda mer allsidig enn git -logg . Det kan fungere med koder og andre typer git -objekter utover forpliktelseshistorikk. Den deler mange alternativer med git -logg , men du trenger det virkelig bare hvis du trenger å grave ned i detaljer på lavere nivå.

Gjennomgå fortiden med Git -logg

Git -logg er en komplisert kommando, men du kan få mye bruk av de mest grunnleggende alternativene. Å bla gjennom et arkivs historie er en utmerket måte å forstå hvor ofte endringer skjer og hvor mange som lager dem. Når du har en god forståelse av et projekts historie, vil du ha en flott posisjon til å bidra til det selv.

hvor mye data bruker en YouTube -video
Dele Dele kvitring E -post Bli med i den sosiale kodingstrenden og bidra til GitHub -lagre

Vil du trene kodemuskulaturen og hjelpe til med åpen kildekode -prosjekter? Slik bidrar du til GitHub.

Les neste
Relaterte temaer
  • Programmering
  • GitHub
  • Kodetips
Om forfatteren Bobby Jack(58 artikler publisert)

Bobby er en teknologientusiast som jobbet som programvareutvikler i de fleste to tiårene. Han brenner for spill, jobber som Reviews Editor i Switch Player Magazine, og er fordypet i alle aspekter av online publisering og webutvikling.

Mer fra Bobby Jack

Abonner på vårt nyhetsbrev

Bli med i vårt nyhetsbrev for tekniske tips, anmeldelser, gratis ebøker og eksklusive tilbud!

Klikk her for å abonnere