Как просмотреть все фиксации в течение определенного дня?

Я уже просмотрел соответствующие документы git-scm.com и gitref.org, но Я не могу понять этого.

Скажем, я хочу получить все коммиты на вторник, 12 ноября 2013 года. Используя существующий репо в качестве примера, я знаю, что тот факт, что я совершил в тот день, а также совершил накануне и в день после.

С 2013-11-11 и 2013-11-12

Все последующие дают мне фиксации для 11 и 12 ноября:

  • git log --after="2013-11-11" --until="2013-11-12"
  • git log --since="2013-11-11" --until="2013-11-12"
  • git log --after="2013-11-11" --before="2013-11-12"
  • git log --since="2013-11-11" --before="2013-11-12"

Только 2013-11-12

Все последующие не дают мне никаких коммитов:

  • git log --since="2013-11-12" --until="2013-11-12"
  • git log --since="2013-11-12" --before="2013-11-12"
  • git log --after="2013-11-12" --until="2013-11-12"
  • git log --after="2013-11-12" --before="2013-11-12"

С 2013-11-12 и 2013-11-13

Как и ожидалось (из результатов 2013-11-11 и 2013-11-12 выше), все следующие дают мне результаты с 12 по 13 ноября:

  • git log --since="2013-11-12" --before="2013-11-13"
  • git log --after="2013-11-12" --before="2013-11-13"
  • git log --since="2013-11-12" --until="2013-11-13"
  • git log --after="2013-11-12" --before="2013-11-13"

... и т.д. и т.д. Я чувствую, что я пробовал все возможные комбинации since, after, before и until, но все равно не могу найти ответ, и я не понимаю, являются ли эти варианты инклюзивными или эксклюзивными, поскольку они кажутся инклюзивными, если две даты отличаются, но являются исключительными, если они находятся в тот же день. Я что-то пропустил/что я делаю неправильно?!

Ответ 2

Обычно я проверяю свой журнал git и вижу, что я работал в определенный день, и обновляю свой расписание на его основе, но это боль в заднице, чтобы ввести полную дату в формате ISO, поэтому я просто делаю это как это

git log --after=jun9 --before=jun10

и я добавляю --author только для печати моих коммитов

git log --since=jun9 --until=jun10 --author=Robert 

Этот отпечаток совершает то, что произошло 9 июня (так что в 2016 году в этом случае, а не для 2015 или 2014 и т.д.).

Параметры --since/--after и --until/--before также могут принимать такие вещи, как 3 days ago, yesterday и т.д.

Ответ 3

Ничего плохого в принятом ответе (который я не поддержал), но... мы здесь для науки!

Вывод ниже может быть расширен/настроен с помощью pretty=format:<string> placeholders:

git log --pretty='format:%H %an %ae %ai' | grep 2013-11-12

Не 100% невосприимчивы к ошибкам, так как одна и та же строка могла быть введена пользователем. Но приемлемо в зависимости от того, какие заполнители используются. Вышеприведенный фрагмент, например, не подведет.

Можно просто проанализировать все git log до JSON и использовать/обрабатывать свои данные в одном сердечном содержимом. Отметьте https://github.com/dreamyguy/gitlogg и никогда не оглядывайся!

Отказ от ответственности: это один из моих проектов.

Ответ 4

Я сделал псевдоним для этой конкретной цели:

commitsAtDate = "!f() { git log --pretty='format:%C(yellow)%h %G? %ad%Cred%d %Creset%s%C(cyan) [%cn]' --decorate --after=\"$1 0:00\" --before=\"$1 23:59\" --author \"`git config user.name`\"; }; f"

Использование:

git commitsAtDate 2017-08-18