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 -G
secara default menerima regex, sementara -S
menerima string, tetapi dapat dimodifikasi untuk menerima regex menggunakan --pickaxe-regex
.
Untuk mengilustrasikan perbedaan antara -S<regex> --pickaxe-regex
dan -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-regex
tidak 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 -G
dan -S
(menggunakan --pickaxe-regex
), kami melakukannya menggunakan contoh diff dan git diff
doa 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 diff
Dokumentasi sekarang termasuk:
Untuk mengilustrasikan perbedaan antara -S<regex> --pickaxe-regex
dan
-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-regex
tidak akan (karena jumlah kemunculan string itu tidak berubah).