En af de mest grundlæggende tjenester, der leveres af Git, er projektets historie. Da Git holder styr på alle ændringer i filer, der er foretaget i et arkiv, kan det tilbyde meget kraftige logfunktioner. Du kan forespørge et projekts historie på mange forskellige måder, og du kan udtrække og vise forskellige data ved hjælp af en fleksibel kommando.

Det git log kommandoen er enorm, den største af enhver almindelig Git-kommando. Dens manual er over 2.500 linjer lang. Heldigvis, git log giver meget af sin mest nyttige opførsel fra blot nogle få nøgleindstillinger.

Grundlæggende logføring med standardadfærd

Som standard, git log viser en omvendt-kronologisk liste over forpligtelser. Hver forpligtelse inkluderer sin hash, forfatter, dato og forpligtelsesmeddelelse:

Kommandoen bruger en personsøger (f.eks. Mindre, mere) for at vise det fulde output, så du nemt kan navigere i resultaterne. Du kan konfigurere Git til at bruge et program efter eget valg, såsom den mest personsøger.

Her er noget git-logoutput fra lageret for git kildekoden sig selv:

instagram viewer
begå 670b81a890388c60b7032a4f5b879f2ece8c4558 (HEAD -> master, origin / next,
oprindelse / master, oprindelse / HEAD)
Forfatter: Junio ​​C Hamano
Dato: Mandag 14. juni 13:23:28 2021 +0900
Den anden batch
Undertegnet: Junio ​​C Hamano

Resultatet starter med commit hash (670...) efterfulgt af en liste over grene, der aktuelt peger på den forpligtelse (HEAD -> master, etc.)

Den næste linje beskriver forfatteren af ​​denne forpligtelse med angivelse af deres navn og e-mail-adresse.

Den fulde dato og tid for forpligtelsen følger på den næste linje.

Endelig vises det fulde indhold af forpligtelsesmeddelelsen. Du kan kontrollere det meste af alt andet, som git log tilbyder med kommandolinjemuligheder. Der er to hovedtyper af muligheder:

  • Formatering, der definerer, hvordan Git viser hver forpligtelse.
  • Filtrering, der definerer, hvilken forpligtelse git log inkluderer.

Ud over kommandolinjemuligheder accepterer git log argumenter, der angiver filer, forpligtelser, grene eller andre typer referencer. Disse anvender yderligere filtrering.

Formatering af Git-logoutput

En af de enkleste justeringer er --online mulighed, der giver en meget kort output:

git log --oneline

Hver linje i loggen indeholder nu kun en forkortet commit-hash og emnet for begå beskeden. Dette er en glimrende måde at få et overblik over nylige forpligtelser til projektet:

Desværre, uden nogen anden sammenhæng, er disse oplysninger ikke altid så nyttige. Det kan give dig en vag fornemmelse for projektet, men det mangler datoer og andre nyttige oplysninger om forfattere og filer.

Visning af en filialgraf

Det --kurve mulighed giver dig mulighed for at visualisere forhold mellem grene. Det er meget grundlæggende, men kan hjælpe med at løse en kompliceret historie.

git log --oneline - graf

Relaterede: Sådan oprettes en ny filial i Git

Tilpasset smuk output

Du kan opnå mere kompliceret formatering ved at specificere den detaljeret ved hjælp af --smuk mulighed. Syntaksen går fra meget enkel til meget mere kompleks, så se en manual for komplette detaljer.

git log --pretty = kort

Er stort set det samme som git log uden dato eller fuld meddelelse:

git log --pretty = oneline

Svarer til git log --oneline.

git log --pretty = fyldigere

Indeholder en masse detaljer. Det adskiller endda forfatter og kommitter, der i teorien kan være forskellige mennesker:

Med format: variant kan du levere en streng, der indeholder det indhold, du ønsker, inklusive pladsholdere, der erstattes af forskellige data. Her er nogle eksempler på pladsholdere:

  • % H begå hash
  • % h forkortet begå hash
  • % annonce forfatterdato
  • % ar forfatterdato, relativ
  • % s begå beskedemne
  • % b begå meddelelseslegeme
  • % s forkortet forældre hashes

Du kan tilføje faste tegn til output og farve det. Dette eksempel viser også en variation på datoformat:

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

Bemærk, at parenteser omgiver datoen. Uanset hvilken formatering du vælger, hvis du vil have output til at være nyttigt i en pipeline eller til andre former for tekstbehandling, skal du overveje, hvordan du afgrænser hver del af output.

Viser Diff i loggen

En vigtig detalje, når man ser på et arkivs historie, er forskellene selv. De repræsenterer, hvad der faktisk er ændret i koden! For det første kan du få et resumé af ændringer ved siden af ​​hver forpligtelse ved hjælp af --kortstat:

git log --shortstat

Dette tilføjer en linje som:

1 fil ændret, 48 indsættelser (+), 2 sletninger (-)

Til bunden af ​​hver forpligtelse. Du kan ofte se denne form for resumé - for eksempel på sider på GitHub - og det er en nyttig måde hurtigt at bedømme omfanget af en bestemt forpligtelse på. For mere detaljeret information kan du medtage fuld patch output (diffs) ved hjælp af -p flag:

git log -p

Filtrering af Git-logoutput

Uanset hvilken formatering du anvender, vil du stadig se den komplette log over alle forpligtelser i den aktuelle gren. Selvom Git deler dem op i sider, kan det stadig være meget output. Følgende muligheder giver dig mulighed for at tilpasse, hvilke forpligtelser loggen indeholder.

Begrænsning efter beløb

Hvis du bare vil trimme resultaterne for at vise de seneste få forpligtelser, skal du bruge -[nummer] syntaks:

git log -2

Begrænsning efter dato

For at begrænse antallet af forpligtelser til et givet datointerval skal du bruge --siden (--efter) og --så længe (--Før) muligheder. Disse tager hver en dato i ISO 8601-format. Du kan bruge en af ​​dem --siden eller --så længe alene eller begge sammen for at specificere et interval. Indstillingerne --efter og --Før er synonymer.

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

Begrænsning efter fil

Git-log kan fokusere på en bestemt fil snarere end hver fil i dit arkiv. Dette er fantastisk til at hjælpe dig med at finde ud af, hvordan en bestemt fil har ændret sig over tid. Tilføj blot filnavnet til slutningen af ​​din git-kommando:

git log filnavn

Du kan kun se de forpligtelser, der påvirkede filnavn.

Forskelle mellem grene

Du kan have nogle unikke krav, når du ser loggen til en filial. For eksempel i stedet for at se hele historikken, vil du måske bare se, hvad der er ændret i den specifikke gren. Git log kan hjælpe via ref1..ref2 syntaks. Der er tre lidt forskellige tilgange, som du kan bruge:

  1. Se forpligtelser, der er i hovedsagen, men ikke gren:
    git log - oprindelig oprindelse / gren..origin / main
  2. Se forpligtelser, der er i gren, men ikke hoved:
    git log --online oprindelse /vigtigste..oprindelse/afdeling
  3. Se forpligtelser, der kun findes i filial eller hoved:
    git log - online oprindelse / gren...oprindelse / hoved

Ligesom du kan se historik mellem grene ved hjælp af ref1..ref2 syntaks, kan du også se historik mellem tags på samme måde. Når alt kommer til alt er både tags og grene referencetyper.

git log --abbrev-commit --pretty = format: '% h% ar% s' v2.32.0-rc3..v2.32.0

Hvis du forbereder udgivelsesnotater til et større projekt, git shortlog skal være din første anløbshavn. Det producerer en liste over forfattere med begåede emner ved siden af ​​dem. Du kan give det et referenceområde for at begrænse historikken på en lignende måde til git log:

git shortlog v2.32.0-rc3..v2.32.0

Det git show-kommando er endnu mere alsidig end git log. Det kan arbejde med tags og andre typer git-objekter ud over begivenhedshistorik. Det deler mange optioner med git log, men du har kun brug for det, hvis du har brug for at grave ned i detaljer på lavere niveau.

Gennemgå fortiden med git-log

Git-log er en kompliceret kommando, men du kan få meget brug af de mest basale muligheder. Gennemse et arkivs historie er en glimrende måde at forstå, hvor ofte ændringer sker, og hvor mange mennesker foretager dem. Når du først har en god forståelse af et projekts historie, vil du være i en god position til selv at bidrage til det.

E-mail
Deltag i den sociale kodningstrend og bidrager til GitHub-arkiver

Vil du udøve dine kodende muskler og hjælpe open source-projekter? Sådan bidrager du til GitHub.

Læs Næste

Relaterede emner
  • Programmering
  • GitHub
  • Kodningstip
Om forfatteren
Bobby Jack (54 udgivne artikler)

Bobby er en teknologientusiast, der arbejdede som softwareudvikler i det meste af to årtier. Han brænder for spil, arbejder som Reviews Editor i Switch Player Magazine og er fordybet i alle aspekter af onlineudgivelse og webudvikling.

Mere fra Bobby Jack

Abonner på vores nyhedsbrev

Deltag i vores nyhedsbrev for tekniske tip, anmeldelser, gratis e-bøger og eksklusive tilbud!

Et trin mere !!!

Bekræft din e-mail-adresse i den e-mail, vi lige har sendt dig.

.