"date" ist ein bisschen ein loses Konzept in git. Ein Commit hat ein Autorendatum, das möglicherweise einige Zeit in der Vergangenheit liegt, bevor jemand das Commit tatsächlich in sein Repository zieht / festschreibt. Außerdem kann das Commit neu basiert und aktualisiert werden, um über einem anscheinend neueren Commit zu liegen.
Ein Commit hat auch ein Commit-Datum, das aktualisiert wird, wenn ein Commit in irgendeiner Weise neu basiert oder geändert wird. Es ist wahrscheinlicher, dass diese Commits in einer chronologischen Reihenfolge vorliegen, aber Sie sind immer noch dem Committer ausgeliefert, der die richtige Zeit auf seinem Computer eingestellt hat. Trotzdem kann ein unverändertes Commit auf unbestimmte Zeit in einem Feature-Zweig in einem Remote-Repository gespeichert werden wird in den Hauptzweig eines zentralen Repositorys zusammengeführt.
Was für Ihre Zwecke wahrscheinlich am nützlichsten ist, ist das Reflog-Datum für das betreffende Repository. Wenn Sie Reflogs pro Zweig aktiviert haben (siehe git config core.logAllRefUpdates
), können Sie mithilfe der ref@{date}
Syntax angeben , wo sich ein Zweig zu einem bestimmten Zeitpunkt befand.
Z.B
git log -p master@{2009-07-01}..master@{now}
Sie können auch 'Fuzzy'-Beschreibungen verwenden wie:
git log -p "master@{1 month ago}..master@{yesterday}"
Diese Befehle zeigen alle Commits an, die in dem angegebenen Zweig des Repositorys "erschienen" sind, unabhängig davon, wie "alt" sie tatsächlich sind, je nach Autor und Commit-Datum.
Beachten Sie, dass das Reflog pro Zweig für ein Repository spezifisch ist. Wenn Sie also den Protokollbefehl auf einem Klon ausführen und nicht (sagen wir) einen Monat lang abrufen, ziehen Sie alle Änderungen für den letzten Monat auf einmal ab. Dann werden alle Änderungen des letzten Monats in einem @{1 hour ago}..@{now}
Bereich angezeigt. Wenn Sie den Befehl log für das 'zentrale' Repostory ausführen können, auf das die Benutzer zugreifen, kann er das tun, was Sie möchten.