Как заставить журнал Git показывать все сегодняшние коммиты? - PullRequest
74 голосов
/ 25 февраля 2011

Я хочу видеть все коммиты, которые я сделал сегодня, используя git log. Я придумал git log --after="yesterday"
Тем не менее, мне кажется немного неловким, есть ли более простая команда для достижения того же эффекта?

Ответы [ 6 ]

81 голосов
/ 03 марта 2011

Редактировать: Поскольку это принятый ответ, я не могу его удалить, поэтому я публикую здесь ответ @ Саймона:

git log --since="6am"

И, конечно, вы можете настроить время на то, что вам достаточно для "утра":)

61 голосов
/ 25 февраля 2011

Может быть, лучше всего использовать

git log --since="6am"

Вы можете настроить время по своему усмотрению;)

18 голосов
/ 26 августа 2013

Вы можете создать псевдоним для сокращения этой команды

git config --global alias.today 'log --since=7am'

и затем выполнить:

git today
16 голосов
/ 01 июля 2015

Чтобы получить коммиты от всех сегодня ...

git log --since=midnight
4 голосов
/ 05 августа 2014

Кстати, это также работает:
git log --since=am

3 голосов
/ 30 апреля 2016

Уже есть несколько полезных правильных ответов (например, git log --since="6am"), но странно, что в документации отсутствуют специальные даты Git (по крайней мере, поиск в Google "вчера", "полдень" сайта: git-scm.com не возвращает результатов).

Существуют способы узнать, что доступно, например, ответы на Спецификация для синтаксиса дат git особенно полезны. В одном Райан О'Хара указывает , что

it seems to accept all formats that it can output, as described in the documentation for the --date option:

--date=(relative|local|default|iso|rfc|short|raw)

Действует только для дат, отображаемых в удобочитаемом формате, например, при использовании --pretty. log.date Переменная config устанавливает значение по умолчанию для журнала опция команды --date.

--date=relative показывает даты относительно текущего времени, например, "2 часа назад".

--date=local показывает временные метки в местном часовом поясе пользователя.

--date=iso (или --date=iso8601) показывает метки времени в формате ISO 8601.

--date=rfc (или --date=rfc2822) показывает временные метки в формате RFC 2822, часто встречающиеся в сообщениях электронной почты.

--date=short показывает только дату, но не время, в формате YYYY-MM-DD.

--date=raw показывает дату во внутреннем необработанном формате git %s %z format.

--date=default показывает временные метки в исходном часовом поясе (как коммиттера, так и автора).

Мой любимый ответ - от me_and , который направляет нас к классу git date.c . Сканируйте его, и вы найдете этот код (на момент написания он был в строке 925):

static const struct special {
    const char *name;
    void (*fn)(struct tm *, struct tm *, int *);
} special[] = {
    { "yesterday", date_yesterday },
    { "noon", date_noon },
    { "midnight", date_midnight },
    { "tea", date_tea },
    { "PM", date_pm },
    { "AM", date_am },
    { "never", date_never },
    { "now", date_now },
    { NULL }
};

Я определенно использую git log --before=tea, хотя, глядя на функцию date_tea, я не думаю, что они прочитали Руперт Брук :

static void date_tea(struct tm *tm, struct tm *now, int *num)
{
    date_time(tm, now, 17);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...