(отвечает на мой вопрос)
Журнал Git поддерживает фильтрацию дат до или после заданного времени.Пример:
git log --after='july 17 2010' --before='july 31 2010'
Вот скрипт оболочки, который немного упрощает перечисление диапазонов коммитов, но он также использует более короткий формат, чем по умолчанию в git log:
#!/bin/sh
# git-changes
FORMAT='%cd%x09%h%n%x09%s%n'
CMD="git log --format=format:$FORMAT"
case $# in
0 )
$CMD ;;
1 )
$CMD "--after=`date -d "$1"`" ;;
2 )
$CMD "--after=`date -d "$1"`" --before="`date -d "$2"`";;
esac
Примечание:Я обернул аргументы даты командой date, поскольку git по какой-то причине обрабатывает 'July 17'
как несколько часов от 'July 17 2010'
.
Использование:
git-changes # Same as git log, but more terse
git-changes 'yesterday' # List all commits from 24 hours ago to now
git-changes 'jul 17' 'aug 1' # List all commits after July 17 at midnight
# and before August 1 at midnight.
Пример вывода git-changes 'jul 17' 'aug 1'
:
Sat Jul 31 23:43:47 2010 -0400 86a6727
* Moved libcurl into project directory as static lib.
Sat Jul 31 20:04:24 2010 -0400 3a4eb10
* Added configuration file support.
Sat Jul 31 17:44:53 2010 -0400 aa2046b
* Fixed truncation bug in bit parser.
Sat Jul 17 00:10:57 2010 -0400 99e8124
* Added support for more bits.
Теперь, чтобы увидеть все изменения, внесенные коммитом 99e8124, введите git show 99e8124
.Чтобы увидеть все изменения, внесенные после ревизии 99e8124 (не включая сам коммит), введите git diff 99e8124
.