«Дата» - это немного растяжимое понятие в git. У коммита будет дата автора, которая может быть когда-то давно в прошлом, прежде чем кто-то фактически вытянет / зафиксирует фиксацию в своем репозитории, также фиксация может быть перебазирована и обновлена, чтобы быть поверх явно более новой фиксации.
У фиксации также есть дата фиксации, которая обновляется, если фиксация изменена или изменена каким-либо образом. Эти коммиты, скорее всего, будут в каком-то хронологическом порядке, но вы по-прежнему зависите от того, что коммиттер имеет правильное время, установленное на его компьютере, и даже в этом случае немодифицированный коммит может находиться в функциональной ветке в удаленном репозитории неопределенно долго до объединяются в главную ветвь центрального репозитория.
Что, вероятно, наиболее полезно для ваших целей, - это дата рефлога в конкретном рассматриваемом репозитории. Если у вас включены рефлоги для каждой ветки (см. Раздел "Ресурсы" git config core.logAllRefUpdates
), вы можете использовать ref@{date}
синтаксис, чтобы указать, где ветвь находилась в определенное время.
Например
git log -p master@{2009-07-01}..master@{now}
Вы также можете использовать «нечеткие» описания, например:
git log -p "master@{1 month ago}..master@{yesterday}"
Эти команды покажут все коммиты, которые «появились» в данной ветке репозитория, независимо от того, насколько они «стары» в соответствии с их автором и датами фиксации.
Обратите внимание, что журнал ссылок для каждой ветки специфичен для репозитория, поэтому, если вы запускаете команду журнала на клоне и не тянете (скажем) в течение месяца, тогда извлеките все изменения за последний месяц сразу, тогда все изменения за последний месяц появятся в @{1 hour ago}..@{now}
диапазоне. Если вы можете запустить команду log в «центральном» репосторе, на который люди нажимают, тогда он может делать то, что вы хотите.