Как просмотреть все коммиты за определенный день?
я уже просмотрел соответствующие документы из 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
но все еще не могу найти ответ, и я не понимаю, являются ли эти варианты включительными или исключительными, поскольку они кажутся включительно, если две даты разные, но исключительные, если они в один и тот же день. Я что-то пропустил / что я делаю неправильно?!
4 ответов
ответ заключается в том, чтобы указать время, например git log --after="2013-11-12 00:00" --before="2013-11-12 23:59"
Я обычно проверяю свой журнал 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
, etc.
ничего плохого в принятом ответе(который я поддержал), но... мы здесь ради науки!
выход ниже можно расширить / подгонять с pretty=format:<string>
заполнители:
git log --pretty='format:%H %an %ae %ai' | grep 2013-11-12
не 100% невосприимчив к ошибкам, поскольку одна и та же строка могла быть введена пользователем. но приемлемо в зависимости от того, какие заполнители используются. Например, приведенный выше фрагмент не потерпит неудачу.
можно было бы просто разобрать все git log
к JSON
и потреблять / манипулировать своими данными к своему сердцу. Проверить https://github.com/dreamyguy/gitlogg out и никогда не оглядываться назад!
отказ от ответственности: это один из моих проектов.
Я создал псевдоним для этой конкретной цели:
commitsAtDate = "!f() { git log --pretty='format:%C(yellow)%h %G? %ad%Cred%d %Creset%s%C(cyan) [%cn]' --decorate --after=\" 0:00\" --before=\" 23:59\" --author \"`git config user.name`\"; }; f"
использование:
git commitsAtDate 2017-08-18