Sådan inspiceres et projekts historie med Git Log

Sådan inspiceres et projekts historie med Git Log

En af de mest fundamentale tjenester, som Git leverer, er projekthistorikken. Da Git holder styr på alle ændringer i filer, der er foretaget i et lager, kan det tilbyde meget kraftfulde logfunktioner. Du kan forespørge på 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 adfærd fra blot et par nøglemuligheder.





Grundlæggende logning med standardadfærden

Som standard, git log viser en omvendt-kronologisk oversigt over forpligtelser. Hver forpligtelse indeholder sin hash, forfatter, dato og forpligtelsesbesked:





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

Her er nogle git log output fra git -kildekodens lager sig 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 ...) efterfulgt af en liste over filialer, der i øjeblikket peger på denne forpligtelse ( HEAD -> mester , etc.)

hvorfor får ikke macs virus

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





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

Endelig vises hele indholdet af forpligtelsesmeddelelsen. Du kan styre det meste af alt andet, som git-log tilbyder med kommandolinjemuligheder. Der er to hovedtyper af muligheder:





  • Formatering, som definerer, hvordan Git viser hver forpligtelse.
  • Filtrering, som definerer, hvad der forpligter git log inkluderer.

Ud over kommandolinjemuligheder accepterer git-log argumenter, der angiver filer, forpligter, grene eller andre referencetyper. Disse anvender yderligere filtrering.

Formatering af Git Log Output

En af de enkleste justeringer er --online indstilling, der giver et meget kort output:

git log --oneline

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

Desværre, uden anden kontekst, 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 indstilling giver dig mulighed for at visualisere relationer mellem grene. Det er meget grundlæggende, men kan hjælpe med at løse en kompliceret historie.

git log --oneline --graph

Relaterede: Sådan opretter du en ny filial i Git

Tilpasset Pretty Output

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

computer langsom efter windows opdatering 2016
git log --pretty=short

Er i det væsentlige det samme som git log uden dato eller fuld besked:

git log --pretty=oneline

Er ækvivalent med git log -online .

git log --pretty=fuller

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

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

  • %H begå hash
  • %h forkortet commit hash
  • %til forfatter dato
  • %Med forfatterdato, slægtning
  • %s begå beskedemne
  • % b begå beskedtekst
  • %s forkortede forælder hash

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

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

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

Viser forskelle i loggen

En vigtig detalje, når man ser på et arkivs historie, er forskellene selv. De repræsenterer jo, hvad der faktisk er ændret i koden! Til at begynde med kan du få en oversigt over ændringer ved siden af ​​hver forpligtelse ved hjælp af --kortstat :

git log --shortstat

Dette tilføjer en linje som:

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

Til bunden af ​​hver forpligtelse. Du vil ofte se denne form for oversigt - for eksempel på alle sider på GitHub - og det er en nyttig måde hurtigt at bedømme omfanget af en bestemt forpligtelse. For mere detaljerede oplysninger kan du inkludere fuld patchoutput (diffs) ved hjælp af -s flag:

git log -p

Filtrering af Git Log Output

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 sæt 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 enten --siden eller --så længe alene eller begge sammen for at angive et område. Mulighederne --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 frem for hver fil i dit lager. 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 filename

Du ser kun de forpligtelser, der påvirkede filnavn .

Forskelle mellem grene

Du har muligvis nogle unikke krav, når du ser loggen i 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, du kan bruge:

  1. Se forpligtelser, der er i hovedsagen, men ikke filial: | _+_ |
  2. Se forpligtelser, der er i filial, men ikke hoved: | _+_ |
  3. Se forpligtelser, der kun findes i filial eller hoved: | _+_ |

Forskelle mellem to mærker

Ligesom du kan se historik mellem filialer ved hjælp af ref1..ref2 syntaks, kan du også se historik mellem tags på samme måde. Både tags og grene er jo referencetyper.

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

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

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

Det git show kommando er endnu mere alsidig end git log . Det kan fungere med tags og andre typer git -objekter ud over forpligtelseshistorik. Det deler mange muligheder med git log , men du får det virkelig kun brug for, hvis du skal 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 grundlæggende muligheder. At gennemse et arkivs historie er en glimrende måde at forstå, hvor ofte ændringer sker, og hvor mange mennesker der foretager dem. Når du har en god forståelse af et projekts historie, vil du være i en god position til selv at bidrage til det.

sendte en venneanmodning, og den forsvandt
Del Del Tweet E -mail Deltag i den sociale kodningstrend og bidrag til GitHub -lagre

Vil du træne dine kodningsmuskler og hjælpe med open source -projekter? Sådan bidrager du til GitHub.

Læs Næste
Relaterede emner
  • Programmering
  • GitHub
  • Kodningstip
Om forfatteren Bobby Jack(58 artikler udgivet)

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

Mere fra Bobby Jack

Abonner på vores nyhedsbrev

Tilmeld dig vores nyhedsbrev for at få tekniske tips, anmeldelser, gratis e -bøger og eksklusive tilbud!

Klik her for at abonnere