Jika Anda ingin menemukan semua komit di mana pesan komit berisi kata yang diberikan, gunakan
$ git log --grep=word
Jika Anda ingin menemukan semua komit tempat "kata" ditambahkan atau dihapus dalam konten file (lebih tepatnya: di mana jumlah kemunculan "kata" berubah), yaitu mencari konten komit , gunakan pencarian yang disebut pencarian 'beliung' dengan
$ git log -Sword
Di git modern juga ada
$ git log -Gword
untuk mencari perbedaan yang barisnya ditambahkan atau dihapus cocok dengan "kata" (juga komit konten ).
Perhatikan bahwa -Gsecara default menerima regex, sementara -Smenerima string, tetapi dapat dimodifikasi untuk menerima regex menggunakan --pickaxe-regex.
Untuk mengilustrasikan perbedaan antara -S<regex> --pickaxe-regexdan -G<regex>, pertimbangkan komit dengan perbedaan berikut dalam file yang sama:
+ return !regexec(regexp, two->ptr, 1, ®match, 0);
...
- hit = !regexec(regexp, mf2.ptr, 1, ®match, 0);
Sementara git log -G"regexec\(regexp"akan menunjukkan komit ini, git log -S"regexec\(regexp" --pickaxe-regextidak akan (karena jumlah kemunculan string itu tidak berubah).
Dengan Git 2.25.1 (Februari 2020), dokumentasi diklarifikasi di sekitar regex tersebut.
Lihat komit 9299f84 (06 Feb 2020) oleh Martin Ågren (``) .
(Digabung oleh Junio C Hamano - gitster- dalam komit 0d11410 , 12 Feb 2020)
diff-options.txt: hindari kelebihan "regex" pada contoh
Dilaporkan oleh: Adam Dinwoodie
Ditandatangani-oleh-oleh: Martin Ågren
Diulas oleh: Taylor Blau
Ketika kami mencontohkan perbedaan antara -Gdan -S(menggunakan --pickaxe-regex), kami melakukannya menggunakan contoh diff dan git diffdoa yang melibatkan "regexec", "regexp", "regmatch", ...
Contohnya benar, tetapi kita dapat membuatnya lebih mudah untuk dilepaskan dengan menghindari penulisan "regex. *" Kecuali jika benar-benar diperlukan untuk menunjukkan maksud kita.
Sebaliknya, gunakan kata-kata yang dibuat-buat, non-regexy.
The git diffDokumentasi sekarang termasuk:
Untuk mengilustrasikan perbedaan antara -S<regex> --pickaxe-regexdan
-G<regex>, pertimbangkan komit dengan perbedaan berikut dalam file yang sama:
+ return frotz(nitfol, two->ptr, 1, 0);
...
- hit = frotz(nitfol, mf2.ptr, 1, 0);
Sementara git log -G"frotz\(nitfol"akan menunjukkan komit ini, git log
-S"frotz\(nitfol" --pickaxe-regextidak akan (karena jumlah kemunculan string itu tidak berubah).