Toți dezvoltatorii știu cum să caute în mesajele de commit folosind git log --grep="bugfix". Dar ce faci când descoperi o funcție moartă în cod și vrei să afli în ce commit a apărut pentru prima dată, sau când o linie critică de cod a dispărut și vrei să afli cine a șters-o și în ce context? Opțiunea Pickaxe (-S) din git log caută direct în modificările de conținut efectuate pe codul sursă.
Cum funcționează opțiunea Pickaxe: git log -S
# Găsește doar acele commit-uri în care numărul de apariții ale termenului 'calculeazaTVA' s-a schimbat!
# (Adică commit-urile care AU ADĂUGAT sau AU ȘTERS acel șir din cod):
git log -S "calculeazaTVA" -p
# Parametrul '-p' afișează direct diff-ul modificării, permițându-ți să vezi
# exact autorul, data și linia adăugată sau ștearsă!
Diferența Critică între -S (Pickaxe) și -G (Regex Diff)
| Opțiune | Mecanism de Căutare | Când se Folosește |
|---|---|---|
git log -S "text"(Pickaxe) |
Se potrivește doar dacă numărul de apariții al șirului diferă între commit-ul părinte și cel copil. | Găsirea momentului exact al creării sau ștergerii definitive a unei funcții/variabile (ignoră commit-urile care doar au mutat codul sau au reformatat spațiile). |
git log -G "regex" |
Se potrivește dacă șablonul apare în orice linie modificată (adăugată sau ștearsă) din diff. | Când căutați după expresii regulate sau când vreți să găsiți și modificările de apel ale funcției. |
Căutare pe toate ramurile și urmărirea fișierelor redenumite
# Căutăm o variabilă secretă pe TOATE ramurile din istoric:
git log -S "JWT_SECRET_KEY" --all
# Urmărim istoricul unui fișier chiar dacă a fost redenumit sau mutat în alt director în trecut:
git log --follow -p src/controllers/userController.js