Щоб шукати вміст фіксації (тобто фактичні рядки джерела, на відміну від повідомлень про фіксацію тощо), потрібно зробити:
git grep <regexp> $(git rev-list --all)
git rev-list --all | xargs git grep <expression> буде працювати, якщо ви зіткнетеся з помилкою "Аргумент надто довгий".
Якщо ви хочете обмежити пошук деяким піддеревом (наприклад, "lib / util"), вам потрібно буде передати це rev-listпідкоманді, а grepтакож:
git grep <regexp> $(git rev-list --all -- lib/util) -- lib/util
Це буде проглядати весь текст тексту regexp.
Причина для проходження шляху в обох командах полягає в тому rev-list, що повернеться список редакцій, де відбулися всі зміни lib/util, але також вам потрібно перейти, щоб grepвін здійснював пошук лише в ньому lib/util.
Уявіть собі наступний сценарій: він grepможе виявити те саме <regexp>в інших файлах, які містяться в тій же редакції, що повертаються rev-list(навіть якщо в цьому редакції не було змін цього файлу).
Ось деякі інші корисні способи пошуку вашого джерела:
Шукайте в робочому дереві текст, що відповідає регулярному вираженню регулярного вираження:
git grep <regexp>
Шукайте в робочому дереві рядки тексту, що відповідають регулярному виразу regexp1 або regexp2:
git grep -e <regexp1> [--or] -e <regexp2>
Шукайте в робочому дереві рядки тексту, що відповідають регулярним виразам regexp1 та regexp2, лише до шляхів до файлів звітів:
git grep -l -e <regexp1> --and -e <regexp2>
Шукайте в робочому дереві файли, у яких є рядки тексту, що відповідають регулярному виразу regexp1, і рядки тексту, що відповідають регулярному виразу regexp2:
git grep -l --all-match -e <regexp1> -e <regexp2>
Шукайте робоче дерево за зміненими рядками відповідності тексту:
git diff --unified=0 | grep <pattern>
Шукати у всіх редакціях для тексту, що відповідає регулярному вираженню регулярного вираження:
git grep <regexp> $(git rev-list --all)
Пошук у всіх редакціях між rev1 та rev2 для тексту, що відповідає регулярному виразі regexp:
git grep <regexp> $(git rev-list <rev1>..<rev2>)
git log -Sпікакси, тобто про вину) * [Весело з "git log --grep"] [2] (пошук повідомлень про фіксацію ) * [Fun with "git grep"] [3] [2]: gitster.livejournal.com/30195.html [3]: gitster.livejournal.com/27674.html