Nytt kurs!Tillit på arbeidsplassenBygg tillit, med Per Nordahl.Se kurset

Nytt kurs!Tillit på arbeidsplassen

Bygg tillit, med Per Nordahl.Se kurset

Slik ser du historikken i Git med log, show og diff

Se historikken i Git med git log, git show og git diff. Les en diff, søk etter når kode forsvant, og finn commiten som ødela noe, rett fra terminalen.

4 min lesing3 min video

Utdrag fra nettkurset Git og GitHubAv

Nettsiden har sluttet å virke, og i går gjorde den det. Noe har skjedd mellom, men hva, og i hvilken fil? I GitHub Desktop ville du åpnet fanen History. I terminalen har du tre kommandoer som gir deg det samme, og litt til: git log for listen over endringer, git show for detaljene i én av dem, og git diff for forskjellen mellom to versjoner.

git log: listen over commits

git log viser alle commits i branchen du står på, nyeste øverst. Hver commit har en lang ID, forfatter, dato og commit-melding. Er listen lang, blar du med mellomromstasten, og trykker Q for å gå ut.

Standardvisningen tar mye plass. Disse variantene er mer nyttige i hverdagen:

  • git log --oneline viser én linje per commit, med en kort ID og meldingen.
  • git log --oneline --graph --all tegner branchene og hvor de ble slått sammen, som en enkel graf i terminalen.
  • git log -5 viser bare de fem siste.
  • git log --author="Navn" viser bare én persons commits.
  • git log -- index.html viser bare commits som har endret den filen.

Her merker du hvor mye gode commit-meldinger betyr. «Endre farge på knapp» sier noe. «Fikset» gjør det ikke.

git show: alt om én commit

git log forteller at noe skjedde, men ikke hvilke linjer som ble endret. Kopier ID-en til commiten, og kjør git show etterfulgt av den. Du trenger ikke hele ID-en. De første sju tegnene holder, og det er dem git log --oneline viser.

Resultatet er det samme som når du klikker på en commit i History i GitHub Desktop: meldingen, hvem som gjorde det, og hver linje som ble lagt til eller fjernet. git show HEAD viser siste commit uten at du trenger ID-en, og git show HEAD~1 den før.

git diff: forskjellen mellom to versjoner

git diff uten noe mer viser det du har endret siden siste commit, men ikke lagt i staging ennå. Det er det du ser i fanen Changes i GitHub Desktop før du committer. Valgene bestemmer hva som sammenlignes:

KommandoSammenligner
git diffArbeidsmappen mot staging. Det du har endret, men ikke lagt til
git diff --stagedStaging mot siste commit. Det som blir med i neste commit
git diff HEAD~3Filene nå mot slik de var for tre commits siden
git diff main devTo branches mot hverandre
git diff main origin/mainDin main mot den du har hentet fra GitHub med fetch
Tips: Kjør git diff --staged rett før hver commit. Da ser du nøyaktig hva du er i ferd med å lagre, og fanger opp en glemt testlinje eller en fil som ikke skulle vært med.

Slik leser du en diff

Utskriften ser kryptisk ut første gang, men består bare av tre typer linjer:

  • Linjer som begynner med + er lagt til. I terminalen er de grønne, som i GitHub Desktop.
  • Linjer som begynner med - er fjernet, og er røde.
  • Linjer uten tegn er uendret, og står der for å vise hvor i filen endringen er.

Linjene som begynner med @@, forteller hvilke linjenumre bolken under gjelder. En endret linje vises som én minuslinje med det gamle innholdet, fulgt av én plusslinje med det nye.

Søk i historikken

Vet du hva som ble endret, men ikke når, kan git log lete for deg. git log -S "loggInn" finner alle commits som la til eller fjernet teksten «loggInn» et sted i koden. Det er raskeste vei til svaret på «når forsvant denne funksjonen?». git log --grep="meny" søker i commit-meldingene i stedet. Og git log -p viser hele endringen under hver commit, som en git show for alle på én gang.

Lurer du på hvem som sist endret en bestemt linje, svarer git blame index.html. Den viser filen linje for linje, med commit-ID, forfatter og dato foran hver. På github.com finner du det samme med knappen Blame når du har åpnet en fil.

Finn feilen: et eksempel

Tilbake til nettsiden som sluttet å virke. Slik går du frem:

  1. Kjør git log --oneline -10 for å se de siste ti endringene.
  2. Finn commitene fra i går og i dag. Er det en melding som peker mot det som er ødelagt, starter du der.
  3. Kjør git show med ID-en til commiten og les linjene som ble endret.
  4. Vet du at alt virket for fem commits siden, viser git diff HEAD~5 alt som har endret seg siden, i én oversikt.

Når du har funnet feilen, retter du den og lager en ny commit. Historikken viser da både feilen og rettelsen, og det er nyttig for den som lurer på det samme senere. Hvordan du lager selve commitene, står i Slik bruker du git status, git add og git commit. Kommandoene er også nyttige når du skal forstå en merge-konflikt, fordi git log viser hvilke commits som kolliderte. Alle valgene står i Git-dokumentasjonen for git log.

Denne videoen er hentet fra kurset Git og GitHub på Utdannet.no. I det fulle kurset ser du log, show og diff side om side med fanen History i GitHub Desktop, og bruker dem senere til å se hva som skjedde da du løste en merge-konflikt.

Sondre StaiFaglærer i IT og design
  • Nettkurs i Git og GitHub
  • Nettkurs i Visual Studio Code
  • Nettkurs i Azure – fundamentale konsepter (AZ-900)

Se hele nettkurset

Videoen er et utdrag. Få tilgang til 170+ nettkurs og nettstudier i ett abonnement.

Få tilgang til alle nettkurs