Я уже посмотрел соответствующие документы с 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
но до сих пор не могут найти ответ, и я не понимаю , являются ли эти варианты , включающие или исключающие, поскольку они , как представляется, включительно , если эти две даты отличаются, но Исключительно, если они в один день. Я что-то пропустил / что я делаю не так ?!
Ответы:
Спасибо Джон Варфоломей!
Ответ заключается в указании времени, например,
git log --after="2013-11-12 00:00" --before="2013-11-12 23:59"
источник
git log --after="2013-11-12 00:00" --before="2013-11-13 00:00"
лучше. Я полагаю,gitk --since="2013-11-12 00:00" --until="2013-11-13 00:00" &
будет также работать, если у вас установлен gitk.git log --after="2017-07-25" --before="2017-07-26"
дает действительные результаты для меня.Я обычно проверяю свой журнал git и вижу то, над чем я работал в определенный день, и обновляю свое расписание на основании этого, но задница - это боль в наборе полной даты в формате ISO, поэтому я просто делаю это так
и я добавляю
--author
только распечатать мои коммитыЭто печатает коммиты, которые произошли 9 июня (в данном случае это касается 2016 года, а не 2015 или 2014 и т. Д.).
Параметры
--since/--after
и--until/--before
также могут принимать такие вещи, как3 days ago
,yesterday
и т. Д.источник
since
иuntil
значения не верны, вы точно не получите вывод. Используйтеgit log
сначала, и попытайтесь выбратьsince
иuntil
значение в зависимости от того, что вы видите. Никаких веток или чего-то особенного не требуется. Не уверен, с какой версии Git эта функция доступна. Убедитесь, что у вас есть последняя версия.git log --after="may 2" --before="may 3"
Ничего плохого в принятом ответе (за который я проголосовал), но ... мы здесь для науки!
Вывод ниже можно расширить / настроить с помощью
pretty=format:<string>
заполнителей :Не на 100% невосприимчив к ошибкам, так как пользователь мог ввести ту же строку.Но приемлемо в зависимости от того, какие заполнители используются. Например, приведенный выше фрагмент не потерпит неудачу.
Можно также просто разобрать все ,
git log
чтобыJSON
и потреблять / манипулировать свои данные к своему содержанию сердца. Проверьте https://github.com/dreamyguy/gitlogg и никогда не оглядывайтесь назад!Отказ от ответственности: это один из моих проектов.
источник
Я сделал псевдоним для этой конкретной цели:
Использование:
источник
git commitsAtDate yesterday
,2 days ago
и т.д.Этот скрипт отображает доступный диапазон дат коммитов для текущего репо, а затем запрашивает дату, с которой вы хотите видеть коммиты. Он отображает короткий SHA и полный SHA, автора, отметку времени коммита и комментарии в одинарных кавычках.
Сценарий продолжает запрашивать даты, пока вы не нажмете Enter или Control-D.
Пользователи Mac: требуется дата GNU.
Я назвал сценарий
commitsOnDates
, и вот он в действии. Первая дата, которую я ввожу, не имеет коммитов, поэтому ответ - просто пустая строка:источник