Unul dintre cele mai fundamentale servicii furnizate de Git este istoria proiectului. Deoarece Git ține evidența tuturor modificărilor aduse fișierelor efectuate într-un depozit, poate oferi caracteristici de înregistrare foarte puternice. Puteți interoga istoricul unui proiect în mai multe moduri diferite și puteți extrage și afișa diverse date folosind o singură comandă flexibilă.

git log comanda este imensă, cea mai mare dintre toate comenzile Git obișnuite. Manualul său are peste 2.500 de linii. Din fericire, git log oferă o mare parte din comportamentul său cel mai util din doar câteva opțiuni cheie.

Înregistrarea de bază cu comportamentul implicit

În mod implicit, git log afișează o listă cronologică inversă a comiterilor. Fiecare confirmare include hash-ul, autorul, data și mesajul de confirmare:

Comanda folosește un pager (de exemplu, mai puțin, mai mult) pentru a afișa rezultatul complet, astfel încât să puteți naviga cu ușurință în rezultate. Puteți configura Git pentru a utiliza un program la alegere, cum ar fi cel mai pager.

instagram viewer

Iată câteva ieșiri din jurnalul git depozitul codului sursă git în sine:

commit 670b81a890388c60b7032a4f5b879f2ece8c4558 (HEAD -> master, origine / următoare,
origine / master, origine / HEAD)
Autor: Junio ​​C Hamano
Data: luni 14 iunie 13:23:28 2021 +0900
Al doilea lot
Semnat: Junio ​​C Hamano

Rezultatul începe cu hash-ul commit (670...) urmată de o listă de sucursale care indică în prezent acel commit (CAP -> maestru, etc.)

Următorul rând îl descrie pe autorul acestui commit, indicând numele și adresa de e-mail.

Data completă și ora angajării urmează pe următoarea linie.

În cele din urmă, apare conținutul complet al mesajului de confirmare. Puteți controla majoritatea tuturor celorlalte oferte de jurnalul git cu opțiuni din linia de comandă. Există două tipuri principale de opțiuni:

  • Formatare, care definește modul în care Git afișează fiecare commit.
  • Filtrare, care definește ce comitere git log include.

În plus față de opțiunile din linia de comandă, jurnalul git acceptă argumente care specifică fișiere, confirmări, ramuri sau alte tipuri de referință. Acestea aplică o filtrare suplimentară.

Formatarea Git Log Output

Una dintre cele mai simple ajustări este --o linie opțiune care produce o ieșire foarte scurtă:

git log --oneline

Fiecare linie din jurnal conține acum doar un hash de confirmare abreviat și subiectul mesajul de comitere. Acesta este un mod excelent de a obține o imagine de ansamblu a angajamentelor recente pentru proiect:

Din păcate, fără alt context, aceste informații nu sunt întotdeauna atât de utile. S-ar putea să vă ofere o senzație vagă pentru proiect, dar îi lipsesc datele și alte informații utile despre autori și fișiere.

Vizualizarea unui grafic de ramură

--grafic opțiunea vă permite să vizualizați relațiile dintre ramuri. Este foarte simplu, dar poate ajuta la dezlegarea unei istorii complicate.

git log --oneline --graph

Legate de: Cum să creați o filială nouă în Git

Ieșire destul de personalizată

Puteți obține o formatare mai complicată, specificând-o în detaliu utilizând --frumos opțiune. Sintaxa merge de la foarte simplă la mult mai complexă, deci consultați un manual pentru detalii complete.

git log --pretty = scurt

Este în esență același cu git log fără data sau mesajul complet:

git log --pretty = oneline

Este echivalent cu git log --oneline.

git log --pretty = mai complet

Include multe detalii. Separează chiar autorul și comisarul care, teoretic, pot fi oameni diferiți:

Cu format: varianta, puteți furniza un șir care conține orice conținut doriți, inclusiv substituenți care sunt înlocuiți cu diferite date. Iată câteva exemple de substituenți:

  • % H comite hash
  • % h comisare hash prescurtată
  • %anunț data autorului
  • % ar data autorului, ruda
  • % s comite subiectul mesajului
  • % b comite corpul mesajului
  • % p hash părinte prescurtat

Puteți adăuga caractere fixe la ieșire și le puteți colora. Acest exemplu arată, de asemenea, o variantă a formatului de dată:

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

Rețineți că parantezele înconjoară data. Indiferent de formatarea pe care o alegeți, dacă doriți ca ieșirea să fie utilă într-o conductă sau pentru alte forme de procesare a textului, ar trebui să luați în considerare cum să delimitați fiecare parte a ieșirii.

Se afișează difuzele în jurnal

Un detaliu important atunci când privim istoricul unui depozit sunt diferențele în sine. La final, ele reprezintă ceea ce s-a schimbat în cod! Pentru început, puteți obține un rezumat al modificărilor alături de fiecare commit folosind --shortstat:

git log --shortstat

Aceasta adaugă o linie precum:

1 fișier modificat, 48 inserții (+), 2 ștergeri (-)

În partea de jos a fiecărui angajament. Veți vedea adesea acest tip de rezumat - de-a lungul paginilor de pe GitHub, de exemplu - și este o modalitate utilă de a judeca rapid domeniul de aplicare al unui anumit commit. Pentru informații mai detaliate, puteți include ieșirea completă a patch-ului (diferențe) folosind -p steag:

git log -p

Filtrarea ieșirii jurnalului Git

Indiferent de formatarea pe care o aplicați, veți vedea în continuare jurnalul complet al tuturor validărilor în ramura curentă. Chiar dacă Git le împarte în pagini, poate fi totuși o mulțime de rezultate. Următoarele opțiuni vă permit să personalizați ce comitere include jurnalul.

Restricționarea în funcție de sumă

Dacă doriți doar să tăiați rezultatele pentru a afișa cele mai recente câteva confirmări, utilizați -[număr] sintaxă:

git log -2

Limitarea după dată

Pentru a restricționa setul de confirmări la un anumit interval de date, utilizați --de cand (--după) și --pana cand (--inainte de) Opțiuni. Acestea au fiecare o dată în format ISO 8601. Puteți folosi oricare --de cand sau --pana cand pe cont propriu sau ambele împreună pentru a specifica un interval. Opțiunile --după și --inainte de sunt sinonime.

git log --since = "2021-01-01" --until = "2021-05-01"

Restricționare după fișier

Jurnalul Git se poate concentra pe un anumit fișier, mai degrabă decât pe fiecare fișier din depozitul dvs. Acest lucru este minunat pentru a vă ajuta să aflați cum s-a schimbat un anumit fișier de-a lungul timpului. Pur și simplu adăugați numele fișierului la sfârșitul comenzii git:

git log fișier nume

Veți vedea numai acele confirmări care au fost afectate nume de fișier.

Diferențele dintre ramuri

Este posibil să aveți anumite cerințe unice atunci când vizualizați jurnalul unei sucursale. De exemplu, mai degrabă decât să vedeți întregul istoric, vă recomandăm să vedeți ce s-a schimbat în acea ramură specifică. Jurnalul Git vă poate ajuta prin ref1..ref2 sintaxă. Există trei abordări ușor diferite pe care le puteți utiliza:

  1. Vizualizați confirmările care se află în principal, dar nu în ramură:
    git log --oneline origin / branch..origin / main
  2. Vizualizați confirmările care sunt în ramură, dar nu principale:
    git log --oneline origine /principal..origine/ramură
  3. Vizualizați comitetele care există numai în ramură sau principal:
    git log --oneline origine / ramură...origine / principală

Așa cum puteți vedea istoricul între sucursale folosind ref1..ref2 sintaxă, puteți vizualiza, de asemenea, istoricul între etichete în același mod. La urma urmei, atât etichetele, cât și ramurile sunt tipuri de referință.

git log --abbrev-commit --pretty = format: '% h% ar% s' v2.32.0-rc3..v2.32.0

Dacă pregătiți note de lansare pentru un proiect mai mare, git shortlog ar trebui să fie primul dvs. port de escală. Produce o listă de autori cu subiecte dedicate alături. Puteți trece un interval de referință pentru a limita istoricul într-un mod similar cu jurnalul git:

git shortlog v2.32.0-rc3..v2.32.0

comanda git show este chiar mai versatil decât git log. Poate funcționa cu etichete și alte tipuri de obiecte git dincolo de istoricul de comitere. Împărtășește multe opțiuni cu git log, dar veți avea cu adevărat nevoie doar de el dacă trebuie să căutați detalii la nivel inferior.

Examinați trecutul cu jurnalul Git

Jurnalul Git este o comandă complicată, dar puteți obține o mulțime de utilizare din cele mai de bază opțiuni. Navigarea în istoricul unui depozit este un mod excelent de a înțelege cât de des apar modificările și câți oameni le fac. Odată ce ați înțeles bine istoria unui proiect, veți fi într-o poziție excelentă de a contribui singur la el.

E-mail
Alăturați-vă tendinței de codare socială și contribuiți la GitHub Repositories

Doriți să vă exersați mușchii de codare și să ajutați proiectele open source? Iată cum puteți contribui la GitHub.

Citiți în continuare

Subiecte asemănătoare
  • Programare
  • GitHub
  • Sfaturi de codificare
Despre autor
Bobby Jack (54 articole publicate)

Bobby este un pasionat de tehnologie care a lucrat ca dezvoltator de software timp de aproape două decenii. Este pasionat de jocuri, lucrează ca editor de recenzii la Switch Player Magazine și este cufundat în toate aspectele publicării online și dezvoltării web.

Mai multe de la Bobby Jack

Aboneaza-te la newsletter-ul nostru

Alăturați-vă newsletterului pentru sfaturi tehnice, recenzii, cărți electronice gratuite și oferte exclusive!

Încă un pas…!

Vă rugăm să confirmați adresa de e-mail în e-mailul pe care tocmai vi l-am trimis.

.