Как получить разницу для указанного пользователя между двумя датами из git?

Как получить diff для указанного пользователя между двумя датами из git? Или как использовать команду git whatchanged для отображения коммитов для указанного пользователя?

Есть ли способ без сценариев (встроенная команда git)?


person Mixter    schedule 28.10.2011    source источник


Ответы (2)


Я считаю, что нет такого способа получить разницу, зная только даты.

На сегодняшний день вы можете сделать следующее:

git log --since "OCT 4 2011" --until "OCT 11 2011" --pretty=format:"%H"

А затем git diff между первой и последней ревизиями. Если список ревизий слишком длинный, используйте вышеуказанные git log ... с | head -1 и | tail -1, чтобы получить первую и последнюю ревизии.

Обратите внимание, что приведенный выше журнал git возвращает версии точно между заданными датами, т. е. версии для 5 октября, 6 октября, ..., 10 октября.

person gmile    schedule 28.10.2011
comment
Вы можете вроде сделать это напрямую с помощью diff, но не так надежно, используя нотацию @{date}, например, git diff @{date1} @{date2}. Проблема в том, что конструкция @{date} не просматривает историю фиксации, чтобы преобразовать дату в идентификатор фиксации, а вместо этого использует revlog. В результате, если вы будете действительно часто тянуть, в вашем журнале изменений будет достаточно подробной информации, чтобы описанное выше могло сделать то, что вы хотите, но если вы нет, результаты будут неточными... - person snogglethorpe; 28.10.2011
comment
Мне пришлось добавить знак равенства, чтобы заставить его работать: git log --since="FEB 1 2014" --until="FEB 30 2014" - person bonyiii; 16.05.2014

Это возможно, и с критериями пользователя/коммиттера:

git log --after="2015-10-14" --before="2015-10-21" --grep="MB[FT][0-9-]*" --author="John\|Mary"

Это будет соответствовать чему угодно

  • между этими датами
  • авторами, совпадающими с именами John или Mary
  • где сообщение фиксации включает (например, номер тикета Jira в форме) MBT или MBF плюс числовой код, который может включать символ -.
person New Alexandria    schedule 21.10.2015
comment
Это отображает журнал, но не diff. - person pingu; 07.06.2016