История мерзавца - показывает потерянную строку ключевым словом

У меня была где-нибудь в моем репозитории Мерзавца строка, содержащая слово "Foo" пара сотен фиксаций прежде.

Если существует какой-либо способ найти его число пересмотра, где это был прошлый раз, не покупая FishEye?

44
задан Nikita Fedyashev 15 May 2010 в 07:10
поделиться

2 ответа

Это можно решить с помощью опции pickaxe (-S) в gitlog

 git log -SFoo -- path_containing_change

(можно даже добавить временной диапазон: --since=2009.1.1 --until=2010.1.1)

-S<string>

Ищите различия, которые вводят или удаляют экземпляр <строка>.
Обратите внимание, что это отличается от простого появления строки в выводе diff; подробнее см. запись pickaxe в gitdiffcore(7).

diffcore-pickaxe

Это преобразование используется для поиска пар файлов, представляющих изменения, которые касаются указанной строки.
Когда используется diffcore-pickaxe, он проверяет, существуют ли пары файлов, "исходная" сторона которых содержит указанную строку, а "результирующая" - нет.
Такая пара файлов представляет собой "строку, появившуюся в этом наборе изменений".
Также проверяется обратный случай, в котором указанная строка отсутствует.


Обновление 2014:

С тех пор вы можете сделать (из nilbus's answer):

git log -p --all -S 'search string'
git log -p --all -G 'match regular expression'

Эти команды журнала перечисляют коммиты, которые добавляют или удаляют заданную строку поиска/регекс, (обычно) сначала более поздние.
Опция -p (--patch) заставляет показать соответствующий diff, где шаблон был добавлен или удалён, так что вы можете увидеть его в контексте.

Найдя соответствующий коммит, добавляющий искомый текст (например, 8beeff00d), найдите ветви, содержащие этот коммит:

git branch -a --contains 8beeff00d

(я ссылаюсь на последнюю команду в статье "How to list branches that contain a given commit?")

83
ответ дан 26 November 2019 в 22:04
поделиться

В худшем случае используйте git bisect и grep?

1
ответ дан 26 November 2019 в 22:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: