Jedna od najvažnijih usluga koje pruža Git je povijest projekta. Budući da Git prati sve promjene datoteka izvršenih u spremištu, može ponuditi vrlo moćne značajke bilježenja. Povijest projekta možete ispitivati na mnogo različitih načina, a različite podatke možete izdvojiti i prikazati pomoću jedne fleksibilne naredbe.
The git log naredba je ogromna, najveća od bilo koje redovite Git naredbe. Njegov priručnik dugačak je preko 2500 redaka. Srećom, git log pruža velik dio svog najkorisnijeg ponašanja iz samo nekoliko ključnih opcija.
Osnovno bilježenje sa zadanim ponašanjem
Prema zadanim postavkama, git log prikazuje obrnuti-kronološki popis obveza. Svaki predaj uključuje svoj hash, autora, datum i poruku urezivanja:
Naredba koristi dojavljivač (npr. Manje, više) kako bi prikazala puni izlaz, tako da možete lako kretati se rezultatima. Možete konfigurirati Git da koristi program po vašem izboru, kao što je najpager.
Evo nekih izlaza iz git dnevnika iz spremište izvornog koda git-a sebe:
predati 670b81a890388c60b7032a4f5b879f2ece8c4558 (HEAD -> master, origin / next,
podrijetlo / majstor, podrijetlo / GLAVA)
Autor: Junio C Hamano
Datum: ponedjeljak 14. lipnja 13:23:28 2021 +0900
Druga serija
Potpisao: Junio C Hamano
Rezultat započinje hash-om urezivanja (670...), nakon čega slijedi popis grana koje trenutno upućuju na taj predaj (GLAVA -> gospodaritd.)
Sljedeći redak opisuje autora ovog predavanja, navodeći njegovo ime i e-adresu.
Puni datum i vrijeme urezivanja slijede u sljedećem retku.
Napokon, pojavljuje se puni sadržaj poruke urezivanja. Opcijama naredbenog retka možete kontrolirati većinu svega ostalog što nudi git log. Dvije su glavne vrste opcija:
- Oblikovanje, koje definira kako Git prikazuje svako urezivanje.
- Filtriranje, koje definira koje obveze git log uključuje.
Uz opcije naredbenog retka, git log prihvaća argumente koji određuju datoteke, urezivanja, grane ili druge vrste referenci. Oni se primjenjuju na daljnje filtriranje.
Formatiranje izlaza Git dnevnika
Jedna od najjednostavnijih prilagodbi je --jedna linija opcija koja daje vrlo kratke rezultate:
git log --oneline
Svaki redak u zapisniku sada sadrži samo skraćeni hash i predmet poruka predavanja. Ovo je izvrstan način da dobijete pregled nedavnih obveza na projektu:
Nažalost, bez drugog konteksta, ove informacije nisu uvijek toliko korisne. To bi vam moglo dati nejasan osjećaj za projekt, ali nedostaju datumi i druge korisne informacije o autorima i datotekama.
Pregled grana grane
The --graph opcija vam omogućuje vizualizaciju odnosa između grana. Vrlo je osnovno, ali može pomoći u razmrsivanju složene povijesti.
git log --oneline --graph
Povezano: Kako stvoriti novu granu u Gitu
Prilagođeni lijepi izlaz
Složenije oblikovanje možete postići tako da ga detaljno odredite pomoću --prilično opcija. Sintaksa ide od vrlo jednostavne do puno složenije, pa potražite priručnik za sve pojedinosti.
git log --pretty = kratak
Je u osnovi isto što i git log bez datuma ili pune poruke:
git zapis --pretty = jedna linija
Je ekvivalentan git log --oneline.
git log --pretty = puniji
Sadrži puno detalja. Čak razdvaja autora i počinitelja koji bi, u teoriji, mogli biti različiti ljudi:
Uz format: inačici, možete dostaviti niz koji sadrži sadržaj koji želite, uključujući rezervirana mjesta koja su zamijenjena raznim podacima. Evo nekoliko primjera rezerviranih mjesta:
- % H počiniti hash
- % h skraćeni hash za počinjenje
- %oglas datum autora
- % ar autor datum, srodnik
- % s predati temu poruke
- % b predati tijelo poruke
- % p skraćeni matični heševi
Izlazu možete dodati fiksne znakove i obojati ga. Ovaj primjer također prikazuje varijaciju formata datuma:
git log --pretty = format: '% C (automatski)% h [% ad]% s' --date = kratak
Imajte na umu da zagrade okružuju datum. Bez obzira na formatiranje koje ste odabrali, ako želite da izlaz bude koristan u cjevovodu ili za druge oblike obrade teksta, trebali biste razmotriti kako razgraničiti svaki dio rezultata.
Prikazivanje razlika u zapisniku
Važan detalj kada se gleda povijest spremišta su sami razlike. Oni predstavljaju ono što se u konačnici zapravo promijenilo u kodu! Za početak možete dobiti sažetak promjena uz svako urezivanje korištenjem - kratki stat:
git log --shortstat
Ovo dodaje redak poput:
Promijenjena je 1 datoteka, 48 umetanja (+), 2 brisanja (-)
Na dnu svakog predavanja. Ovakav sažetak često ćete vidjeti - na primjer na svim stranicama na GitHubu - i to je koristan način brzog procjenjivanja opsega određenog urezivanja. Za detaljnije informacije možete uključiti puni izlaz zakrpe (razlike) pomoću -str zastava:
git log -p
Filtriranje izlaza Git dnevnika
Bez obzira na formatiranje koje primijenite, i dalje ćete vidjeti cjeloviti zapisnik svih predavanja u trenutnoj grani. Iako ih Git rastavlja na stranice, to i dalje može biti puno rezultata. Sljedeće opcije omogućuju vam prilagođavanje toga što zapisuje dnevnik.
Ograničavanje po iznosu
Ako samo želite obrezati rezultate kako biste prikazali najnovijih nekoliko obveza, upotrijebite -[broj] sintaksa:
git zapis -2
Ograničavanje prema datumu
Da biste ograničili skup obveza na zadani datumski raspon, upotrijebite --od (--nakon) i --do (--prije) opcije. Svaki od njih uzima datum u formatu ISO 8601. Možete koristiti bilo koje --od ili --do sami ili oboje zajedno kako bi odredili raspon. Opcije --nakon i --prije su sinonimi.
git log --since = "2021-01-01" --until = "2021-05-01"
Ograničavanje datotekom
Git log može se usredotočiti na određenu datoteku, a ne na svaku datoteku u vašem spremištu. Ovo je izvrsno za pomoć u otkrivanju kako se određena datoteka promijenila tijekom vremena. Jednostavno dodajte naziv datoteke na kraj vaše git naredbe:
git zapis datoteke
Vidjet ćete samo one obveze koje su utjecale naziv datoteke.
Razlike između grana
Možda ćete imati neke jedinstvene zahtjeve prilikom pregledavanja dnevnika podružnice. Na primjer, umjesto da vidite cijelu povijest, možda biste samo htjeli vidjeti što se promijenilo u toj određenoj grani. Git log može vam pomoći putem ref1..ref2 sintaksa. Postoje tri malo različita pristupa koja možete koristiti:
- Pogledajte obveze koje su u glavnom, ali ne u grani:
git log --lineline podrijetlo / grana..origin / main
- Pogledajte obveze koje su u grani, ali nisu glavne:
git log - podrijetlo jedne linije /glavni..podrijetlo/podružnica
- Pogledajte obveze koje postoje samo u grani ili glavnoj:
git log --lineline podrijetlo / grana...podrijetlo / glavno
Baš kao što možete pregledavati povijest između grana pomoću ref1..ref2 sintaksu, na isti način možete pregledavati i povijest između oznaka. Napokon, i oznake i grane su vrste reference.
git zapis --abbrev-commit --pretty = format: '% h% ar% s' v2.32.0-rc3..v2.32.0
Ako pripremate napomene o izdanju za veći projekt, git prečac trebao biti vaša prva luka poziva. Izrađuje popis autora s obveznim temama uz njih. Možete mu proslijediti referentni raspon da ograničite povijest na sličan način u git log:
git uži izbor v2.32.0-rc3..v2.32.0
The naredba git show je još svestraniji od git log. Može raditi s oznakama i drugim vrstama git objekata izvan povijesti urezivanja. Dijeli mnoge mogućnosti s git log, ali stvarno će vam trebati samo ako trebate istražiti detalje niže razine.
Pregledajte prošlost s Git Logom
Git log je složena naredba, ali od njegovih najosnovnijih opcija možete se puno koristiti. Pregledavanje povijesti spremišta izvrstan je način da shvatite koliko se često događaju promjene i koliko ih ljudi čini. Nakon što dobro razumijete povijest projekta, bit ćete u sjajnoj poziciji da sami tome doprinesete.
Želite vježbati svoje mišiće kodiranja i pomoći projektima otvorenog koda? Evo kako doprinijeti GitHubu.
Pročitajte Dalje
- Programiranje
- GitHub
- Savjeti za kodiranje
Bobby je tehnološki entuzijast koji je većinu dva desetljeća radio kao programer softvera. Zaljubljen je u igre, radeći kao urednik recenzija u časopisu Switch Player, i uživan je u svim aspektima internetskog izdavanja i web razvoja.
Pretplatite se na naše obavijesti
Pridružite se našem biltenu za tehničke savjete, recenzije, besplatne e-knjige i ekskluzivne ponude!
Još jedan korak…!
Potvrdite svoju e-adresu u e-pošti koju smo vam upravo poslali.