Untuk mencari konten komit (yaitu, baris sumber aktual, sebagai lawan dari komit pesan dan sejenisnya), Anda perlu melakukan:
git grep <regexp> $(git rev-list --all)
git rev-list --all | xargs git grep <expression>
akan berfungsi jika Anda mengalami kesalahan "Daftar argumen terlalu panjang".
Jika Anda ingin membatasi pencarian hingga beberapa subtree (misalnya, "lib / util"), Anda harus meneruskannya ke rev-list
subkomand dan grep
juga:
git grep <regexp> $(git rev-list --all -- lib/util) -- lib/util
Ini akan mencakup semua teks komit Anda untuk regexp
.
Alasan untuk melewati jalan di kedua perintah adalah karena rev-list
akan mengembalikan daftar revisi tempat semua perubahan lib/util
terjadi, tetapi Anda juga harus meneruskan ke grep
sehingga hanya akan mencari lib/util
.
Bayangkan saja skenario berikut ini: grep
mungkin menemukan hal yang sama <regexp>
pada file lain yang terkandung dalam revisi yang sama dikembalikan oleh rev-list
(bahkan jika tidak ada perubahan pada file pada revisi itu).
Berikut ini beberapa cara lain yang berguna untuk mencari sumber Anda:
Telusuri pohon kerja untuk pencocokan teks regexp ekspresi reguler:
git grep <regexp>
Telusuri pohon kerja untuk baris teks yang cocok dengan ekspresi reguler regexp1 atau regexp2:
git grep -e <regexp1> [--or] -e <regexp2>
Telusuri bagan yang berfungsi untuk baris teks yang cocok dengan ekspresi reguler regexp1 dan regexp2, hanya melaporkan jalur file:
git grep -l -e <regexp1> --and -e <regexp2>
Cari pohon yang berfungsi untuk file yang memiliki baris teks yang cocok dengan ekspresi reguler regexp1 dan baris teks yang cocok dengan ekspresi reguler regexp2:
git grep -l --all-match -e <regexp1> -e <regexp2>
Telusuri pohon kerja untuk perubahan garis pola pencocokan teks:
git diff --unified=0 | grep <pattern>
Cari semua revisi untuk pencocokan teks reguler regexp ekspresi:
git grep <regexp> $(git rev-list --all)
Cari semua revisi antara rev1 dan rev2 untuk teks yang cocok dengan regexp ekspresi reguler:
git grep <regexp> $(git rev-list <rev1>..<rev2>)
git log -S
dan kesalahan) * [Bersenang-senang dengan "git log --grep"] [2] (mencari pesan komit ) * [Bersenang-senang dengan "git grep"] [3] [2]: gitster.livejournal.com/30195.html [3]: gitster.livejournal.com/27674.html