Een van de meest fundamentele diensten van Git is de projectgeschiedenis. Omdat Git alle wijzigingen in bestanden die in een repository zijn gemaakt bijhoudt, kan het zeer krachtige logfuncties bieden. U kunt de geschiedenis van een project op veel verschillende manieren opvragen en u kunt verschillende gegevens extraheren en weergeven met één flexibele opdracht.
De git log commando is enorm, het grootste van elk regulier Git-commando. De handleiding is meer dan 2500 regels lang. Gelukkig, git log biedt veel van het meest bruikbare gedrag van slechts een paar belangrijke opties.
Basisregistratie met het standaardgedrag
Standaard, git log toont een omgekeerd chronologische lijst van commits. Elke commit bevat zijn hash, auteur, datum en commit-bericht:
De opdracht gebruikt een pager (bijvoorbeeld minder, meer) om de volledige uitvoer weer te geven, zodat u gemakkelijk door de resultaten kunt navigeren. Je kunt Git configureren om een programma naar keuze te gebruiken, zoals: de meest pager.
Hier is wat git log-uitvoer van: de repository van de git-broncode zelf:
commit 670b81a890388c60b7032a4f5b879f2ece8c4558 (HEAD -> master, oorsprong/volgende,
origin/master, origin/HEAD)
Auteur: Junio C Hamano
Datum: ma 14 juni 13:23:28 2021 +0900
De tweede batch
Afgetekend door: Junio C Hamano
Het resultaat begint met de commit-hash (670...) gevolgd door een lijst met branches die momenteel naar die commit wijzen (HOOFD -> meester, enz.)
De volgende regel beschrijft de auteur van deze commit, met vermelding van hun naam en e-mailadres.
De volledige datum en tijd van de commit volgen op de volgende regel.
Ten slotte verschijnt de volledige inhoud van het commit-bericht. Je kunt het meeste van al het andere dat git log biedt, besturen met opdrachtregelopties. Er zijn twee hoofdtypen opties:
- Opmaak, die definieert hoe Git elke commit weergeeft.
- Filteren, wat bepaalt welke commits git log omvat.
Naast de opdrachtregelopties accepteert git log argumenten die bestanden, commits, branches of andere soorten referentie specificeren. Deze passen een verdere filtering toe.
Git-logboekuitvoer formatteren
Een van de eenvoudigste aanpassingen is de --een lijn optie die een zeer korte uitvoer produceert:
git log --oneline
Elke regel in het logboek bevat nu alleen een verkorte commit-hash en het onderwerp van het commit-bericht. Dit is een uitstekende manier om een overzicht te krijgen van recente toezeggingen aan het project:
Helaas is deze informatie zonder andere context niet altijd even nuttig. Het geeft je misschien een vaag idee van het project, maar het ontbreekt aan datums en andere nuttige informatie over auteurs en bestanden.
Een vertakkingsgrafiek bekijken
De --grafiek optie stelt u in staat relaties tussen branches te visualiseren. Het is heel eenvoudig, maar kan helpen een gecompliceerde geschiedenis te ontrafelen.
git log --oneline --graph
Verwant: Hoe maak je een nieuwe vertakking in Git
Aangepaste mooie output
U kunt meer gecompliceerde opmaak bereiken door het in detail te specificeren met behulp van de --mooi keuze. De syntaxis gaat van heel eenvoudig naar veel complexer, dus raadpleeg een handleiding voor volledige details.
git log --pretty=short
Is in wezen hetzelfde als git log zonder de datum of het volledige bericht:
git log --pretty=oneline
Is gelijk aan git log --oneline.
git log --pretty=voller
Bevat veel details. Het scheidt zelfs auteur en committer, die in theorie verschillende mensen kunnen zijn:
Met de formaat: variant, kunt u een string aanleveren met de inhoud die u wilt, inclusief tijdelijke aanduidingen die worden vervangen door verschillende gegevens. Hier zijn enkele voorbeelden van tijdelijke aanduidingen:
- %H hasj plegen
- %h afgekorte commit hash
- %advertentie auteur datum
- %ar auteur datum, relatief
- %s commit bericht onderwerp
- %b commit berichttekst
- %p afgekorte bovenliggende hashes
U kunt vaste tekens aan de uitvoer toevoegen en deze inkleuren. Dit voorbeeld toont ook een variatie op het datumformaat:
git log --pretty=format:'%C(auto) %h [%ad] %s' --date=short
Merk op dat de datum tussen haakjes staat. Welke opmaak u ook kiest, als u wilt dat de uitvoer nuttig is in een pijplijn of voor andere vormen van tekstverwerking, moet u overwegen hoe u elk deel van de uitvoer kunt afbakenen.
Verschillen in het logboek weergeven
Een belangrijk detail bij het bekijken van de geschiedenis van een repository zijn de diffs zelf. Ze vertegenwoordigen tenslotte wat er in de code is veranderd! Om te beginnen kun je naast elke commit een samenvatting van de wijzigingen krijgen met --shortstat:
git log --shortstat
Dit voegt een regel toe zoals:
1 bestand gewijzigd, 48 invoegingen (+), 2 verwijderingen (-)
Onderaan elke commit. Je zult dit soort samenvatting vaak zien - bijvoorbeeld op pagina's op GitHub - en het is een handige manier om snel de reikwijdte van een specifieke commit te beoordelen. Voor meer gedetailleerde informatie kunt u volledige patch-uitvoer (diffs) opnemen met behulp van de -p vlag:
git log -p
Git-logboekuitvoer filteren
Welke opmaak je ook toepast, je zult nog steeds het volledige logboek zien van alle commits in de huidige branch. Ook al verdeelt Git ze in pagina's, het kan nog steeds veel output zijn. Met de volgende opties kun je aanpassen welke commits het logboek bevat.
Beperken op bedrag
Als je alleen de resultaten wilt bijsnijden om de meest recente paar commits te tonen, gebruik dan de -[aantal] syntaxis:
git log -2
Beperken op datum
Om de set commits te beperken tot een bepaald datumbereik, gebruik je de --sinds (--na) en --tot (--voordat) opties. Deze hebben elk een datum in ISO 8601-formaat. U kunt beide gebruiken: --sinds of --tot afzonderlijk of beide samen om een bereik te specificeren. De opties --na en --voordat zijn synoniemen.
git log --since="2021-01-01" --tot="2021-05-01"
Beperken op bestand
Git log kan focussen op een specifiek bestand in plaats van elk bestand in je repository. Dit is geweldig om u te helpen erachter te komen hoe een bepaald bestand in de loop van de tijd is veranderd. Voeg eenvoudig de bestandsnaam toe aan het einde van je git-opdracht:
git log bestandsnaam
Je ziet alleen die commits die van invloed zijn bestandsnaam.
Verschillen tussen takken
Mogelijk hebt u enkele unieke vereisten bij het bekijken van het logboek van een filiaal. Bijvoorbeeld, in plaats van de hele geschiedenis te zien, wil je misschien gewoon zien wat er is veranderd in die specifieke branch. Git log kan helpen via de ref1..ref2 syntaxis. Er zijn drie enigszins verschillende benaderingen die u kunt gebruiken:
- Bekijk commits die in de main, maar niet in de branch zijn:
git log --oneline origin/branch..origin/main
- Bekijk commits die in branch zijn, maar niet in de main:
git log --oneline origin/hoofd..oorsprong/Afdeling
- Bekijk commits die alleen in branch of main bestaan:
git log --oneline origin/branch...herkomst/hoofd
Net zoals u de geschiedenis tussen vestigingen kunt bekijken met behulp van de ref1..ref2 syntaxis, kunt u op dezelfde manier ook de geschiedenis tussen tags bekijken. Zowel tags als branches zijn immers vormen van referentie.
git log --abbrev-commit --pretty=format:'%h %ar %s' v2.32.0-rc3..v2.32.0
Als u release-opmerkingen voor een groter project voorbereidt, git shortlog zou uw eerste aanloophaven moeten zijn. Het levert een lijst op van auteurs met daarnaast commit-onderwerpen. Je kunt er een referentiebereik aan doorgeven om de geschiedenis op een vergelijkbare manier als git log te beperken:
git shortlog v2.32.0-rc3..v2.32.0
De git show commando is nog veelzijdiger dan git log. Het kan werken met tags en andere soorten git-objecten buiten de commit-geschiedenis. Het deelt veel opties met git log, maar je hebt het alleen echt nodig als je dieper moet ingaan op details op een lager niveau.
Bekijk het verleden met Git Log
Git log is een ingewikkeld commando, maar je kunt veel gebruik maken van de meest elementaire opties. Bladeren door de geschiedenis van een repository is een uitstekende manier om te begrijpen hoe vaak veranderingen optreden en hoeveel mensen ze maken. Als je eenmaal een goed begrip hebt van de geschiedenis van een project, ben je in een uitstekende positie om er zelf aan bij te dragen.
Wil je je codeerspieren trainen en open source-projecten helpen? Hier leest u hoe u kunt bijdragen aan GitHub.
Lees volgende
- Programmeren
- GitHub
- Codeertips
Bobby is een technologie-enthousiasteling die bijna twee decennia als softwareontwikkelaar heeft gewerkt. Hij is gepassioneerd door gamen, werkt als recensie-editor bij Switch Player Magazine en is ondergedompeld in alle aspecten van online publiceren en webontwikkeling.
Abonneer op onze nieuwsbrief
Word lid van onze nieuwsbrief voor technische tips, recensies, gratis e-boeken en exclusieve deals!
Nog een stap…!
Bevestig uw e-mailadres in de e-mail die we u zojuist hebben gestuurd.