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