Jednou z nejzákladnějších služeb poskytovaných společností Git je historie projektu. Jelikož Git sleduje všechny změny souborů provedených v úložišti, může nabídnout velmi výkonné funkce protokolování. Na historii projektu se můžete dotazovat mnoha různými způsoby a pomocí jednoho flexibilního příkazu můžete extrahovat a zobrazit různá data.
The git log příkaz je obrovský, největší ze všech běžných příkazů Git. Jeho příručka má přes 2 500 řádků. Naštěstí, git log poskytuje většinu svého nejužitečnějšího chování pouze z několika klíčových možností.
Základní protokolování s výchozím chováním
Ve výchozím stavu, git log zobrazuje reverzní chronologický seznam závazků. Každé potvrzení obsahuje jeho hash, autora, datum a zprávu o potvrzení:
Příkaz používá pager (např. Méně, více) k zobrazení celého výstupu, takže můžete snadno procházet výsledky. Git můžete nakonfigurovat tak, aby používal program podle vašeho výběru, například nejvíc pager.
Tady je nějaký výstup protokolu git z úložiště zdrojového kódu git sám:
spáchat 670b81a890388c60b7032a4f5b879f2ece8c4558 (HLAVA -> hlavní, počátek / další,
origin / master, origin / HEAD)
Autor: Junio C Hamano
Datum: Po 14. června 13:23:28 2021 +0900
Druhá várka
Podepsáno od: Junio C Hamano
Výsledek začíná hashem potvrzení (670...) následovaný seznamem větví, které aktuálně směřují k tomuto potvrzení (HLAVA -> pán, atd.)
Následující řádek popisuje autora tohoto potvrzení a uvádí jeho jméno a e-mailovou adresu.
Celé datum a čas potvrzení následují na dalším řádku.
Nakonec se zobrazí celý obsah zprávy o potvrzení. Většinu všeho, co git log nabízí, můžete ovládat pomocí možností příkazového řádku. Existují dva hlavní typy možností:
- Formátování, které definuje, jak Git zobrazuje jednotlivé potvrzení.
- Filtrování, které definuje, které se zaváže git log zahrnuje.
Kromě možností příkazového řádku přijímá git log argumenty určující soubory, revize, větve nebo jiné typy odkazů. To platí pro další filtrování.
Formátování výstupu protokolu Git
Jednou z nejjednodušších úprav je - online možnost, která produkuje velmi krátký výstup:
git log - online
Každý řádek v protokolu nyní obsahuje pouze zkrácený hash odevzdání a předmět zpráva o potvrzení. Jedná se o vynikající způsob, jak získat přehled o posledních závazcích k projektu:
Bohužel bez dalších souvislostí nejsou tyto informace vždy tak užitečné. Možná vám projekt dá vágní pocit, ale chybí mu data a další užitečné informace o autorech a souborech.
Prohlížení větvového grafu
The --graf Tato možnost umožňuje vizualizovat vztahy mezi větvemi. Je to velmi základní, ale může to pomoci rozmotat komplikovanou historii.
git log - online - graf
Příbuzný: Jak vytvořit novou pobočku v Git
Přizpůsobený pěkný výstup
Složitějšího formátování můžete dosáhnout jeho podrobným určením pomocí --dosti volba. Syntaxe jde od velmi jednoduché po mnohem složitější úplné podrobnosti najdete v příručce.
git log --pretty = short
Je v podstatě stejný jako git log bez data nebo celé zprávy:
git log --pretty = jeden řádek
Je ekvivalentní k git log - online.
git log --pretty = plnější
Zahrnuje spoustu podrobností. Dokonce odděluje autora a redaktora, kteří mohou být teoreticky různí lidé:
S formát: varianta, můžete zadat řetězec obsahující jakýkoli obsah, který chcete, včetně zástupných symbolů, které jsou nahrazeny různými daty. Zde je několik příkladů zástupných symbolů:
- % H spáchat hash
- % h zkrácený hash potvrzení
- %inzerát datum autora
- % ar autor datum, relativní
- % s spáchat předmět zprávy
- % b tělo zprávy potvrzení
- % str zkrácený rodičovský hash
Do výstupu můžete přidat pevné znaky a vybarvit jej. Tento příklad také ukazuje variantu formátu data:
git log --pretty = format: '% C (auto)% h [% ad]% s' --date = short
Všimněte si, že závorky obklopují datum. Bez ohledu na zvolené formátování, pokud chcete, aby byl výstup užitečný v kanálu nebo pro jiné formy zpracování textu, měli byste zvážit, jak ohraničit jednotlivé části výstupu.
Zobrazení rozdílů v protokolu
Důležitým detailem při pohledu na historii úložiště jsou samotné rozdíly. Představují, co se vlastně v kódu změnilo! Pro začátečníky můžete získat souhrn změn spolu s každým použitím potvrzení --shortstat:
git log --shortstat
Přidá řádek jako:
1 soubor změněn, 48 vložení (+), 2 odstranění (-)
Na konec každého potvrzení. Tento druh shrnutí často uvidíte - například na stránkách GitHub - a je to užitečný způsob, jak rychle posoudit rozsah konkrétního potvrzení. Chcete-li získat podrobnější informace, můžete pomocí příkazu -p vlajka:
git log -p
Filtrování výstupu protokolu Git
Bez ohledu na to, jaké formátování použijete, stále uvidíte kompletní protokol všech závazků v aktuální větvi. Přestože je Git rozdělí na stránky, stále to může být hodně výstupu. Následující možnosti vám umožňují přizpůsobit, které revize obsahuje protokol.
Omezení podle částky
Pokud chcete pouze oříznout výsledky tak, aby zobrazovaly několik posledních revizí, použijte -[číslo] syntax:
git log -2
Omezení podle data
Chcete-li omezit sadu závazků na dané časové období, použijte --od té doby (--po) a --dokud (--před) možnosti. Každý z nich má rande ve formátu ISO 8601. Můžete použít buď --od té doby nebo --dokud samostatně, nebo obojí společně, aby určil rozsah. Možnosti --po a --před jsou synonyma.
git log --since = "2021-01-01" --until = "2021-05-01"
Omezení podle souboru
Protokol Git se může zaměřit spíše na konkrétní soubor než na každý soubor ve vašem úložišti. To je skvělé, protože vám pomůže zjistit, jak se určitý soubor v průběhu času změnil. Jednoduše připojte název souboru na konec vašeho příkazu git:
název souboru git log
Uvidíte pouze ty závazky, které se to dotkly název souboru.
Rozdíly mezi pobočkami
Při prohlížení protokolu pobočky můžete mít nějaké jedinečné požadavky. Spíše než zobrazit celou historii můžete chtít pouze zjistit, co se v dané konkrétní pobočce změnilo. Git log vám může pomoci prostřednictvím ref1..ref2 syntax. Můžete použít tři mírně odlišné přístupy:
- Zobrazit potvrzení, která jsou v hlavním, ale ne větvi:
git log - online původ / větev..původ / hlavní
- Zobrazit potvrzení, která jsou ve větvi, ale nejsou hlavní:
git log - původ online /hlavní..původ/větev
- Zobrazit potvrzení, která existují pouze ve větvi nebo hlavní:
git log - online původ / větev...původ / hlavní
Stejně jako si můžete prohlížet historii mezi větvemi pomocí ref1..ref2 syntaxe, můžete také stejným způsobem zobrazit historii mezi značkami. Koneckonců, značky i větve jsou typy odkazů.
git log --abbrev-commit --pretty = formát: '% h% ar% s' v2.32.0-rc3..v2.32.0
Pokud připravujete poznámky k vydání pro větší projekt, git shortlog by měl být vaším prvním přístavem. Vytváří seznam autorů, kteří mají vedle sebe předměty spáchání. Můžete mu předat referenční rozsah, abyste omezili historii podobným způsobem jako git log:
git shortlog v2.32.0-rc3..v2.32.0
The příkaz git show je ještě všestrannější než git log. Může pracovat se značkami a jinými typy objektů git mimo historii potvrzení. Sdílí mnoho možností git log, ale budete to opravdu potřebovat, pouze pokud budete potřebovat hlouběji prozkoumat podrobnosti na nižší úrovni.
Zkontrolujte minulost pomocí protokolu Git
Git log je komplikovaný příkaz, ale jeho nejzákladnější možnosti můžete hodně využít. Procházení historie úložiště je vynikající způsob, jak pochopit, jak často ke změnám dochází a kolik lidí je dělá. Jakmile dobře porozumíte historii projektu, budete ve skvělé pozici, abyste do něj sami přispěli.
Chcete procvičit své kódovací svaly a pomoci projektům s otevřeným zdrojovým kódem? Zde je návod, jak přispět do GitHubu.
Přečtěte si další
- Programování
- GitHub
- Tipy pro kódování
Bobby je technologický nadšenec, který většinu softwarových vývojářů pracoval téměř dvě desetiletí. Je vášnivým hráčem, pracuje jako editor recenzí v časopisu Switch Player Magazine a je ponořen do všech aspektů online publikování a vývoje webových stránek.
Přihlaste se k odběru našeho zpravodaje
Připojte se k našemu zpravodaji s technickými tipy, recenzemi, bezplatnými elektronickými knihami a exkluzivními nabídkami!
Ještě jeden krok…!
V e-mailu, který jsme vám právě poslali, potvrďte svou e-mailovou adresu.