2013-09-11 3 views
1

Мне нужно выполнить определенный вид журнала, используя git.Как найти все фиксации с определенной строкой на вставках и удалениях?

Я хотел бы знать, как я могу найти все идентификаторы commits, которые имеют вставки или удаления, используя определенную строку (например, «my_table», например) от начальной даты до конечной.

Возможно ли показать автора и строки, измененные в контексте коммитов, которые соответствуют запросу?

Кто-то знает, как я могу это сделать?

+0

Возможный дубликат http://stackoverflow.com/questions/5816134/git-finding-a-commit-that-introduced-a-string – PherricOxide

+0

@PherricOxide, да, я вижу. Но после моего редактирования я думаю, что мне нужно немного больше предложений по этому вопросу. – GarouDan

ответ

3

Использование git log -S"string" Это покажет вам все коммиты, где изменилось количество событий «string». Если вы хотите увидеть сам патч, добавьте флаг -p или флаг --patch.

Вам изменить выход журнала с --pretty, автор может быть шоу, используя «%»

git log -S"string" -p --pretty="%an" 

Дополнительные параметры и информация взглянуть на Тхо страниц человека. Они также доступны онлайн (https://www.kernel.org/pub/software/scm/git/docs/git-log.html).

+0

Thx много. Это работает, но мне нужно немного изменить вопрос. Вы знаете, как я могу это сделать? – GarouDan

+0

@GarouDan 'git log -S" string "-p', который также покажет автора и фиксацию sha. Если вы хотите только автора, запустите commit sha и строку «git -p -S» контекста «--pretty =»% H% an ». Это все на страницах man https://www.kernel.org/pub/software/scm/git/docs/git-log.html. Есть намного больше вариантов, которые могут показаться вам интересными. –

+0

Я думаю, что я пропустил это изменение, чтобы '--pretty ="% an "', если вы только хотите автора. –

1

Для запроса патч содержимое репозитория, используйте

git log -S<string-pattern> --diff-filter AD.

При необходимости используйте --pickaxe-regex при использовании -S, чтобы включить шаблоны регулярных выражений.

В качестве альтернативы, обыскивать коммитах для конкретной строки, используйте

git log --grep="<message-pattern>" --diff-filter AD

The --diff-filter AD пределы результатов совершает только тогда, когда файлы были Добавлено или Удаляется.

Смежные вопросы