Căutarea Avansată în Istoricul Codului cu git log -S (Pickaxe) și -G în Git

Ghid complet pentru arheologia codului în Git: căutarea momentului exact în care o bucată de cod a fost adăugată sau ștearsă cu git log -S (Pickaxe) și regex -G.

Sintaxă comandă
git log -S 'nume_functie' --source --all | git log -G 'regex' -p

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