Есть ли способ заставить git-reflog показывать дату рядом с каждой записью?

Команда git-reflog по умолчанию не показывает дату рядом с каждой записью, что кажется мне странным упущением; Я думаю, что это было бы очень полезно.

Существуют ли какие-либо параметры командной строки или другие настройки, которые можно использовать, чтобы он отображался при добавлении каждой записи reflog? Manpage не выйдет...

9 ответов

Решение

Как пишет страница руководства, вы можете использовать параметры для git log, сказать git reflog --pretty=short или любой другой, как вам нравится

пытаться

git reflog --date=iso

Вы можете использовать --walk-reflogs вариант git log:

git log -g

Это довольно многословно по умолчанию и печатает дату среди прочего. Вы можете отформатировать его со стандартным --pretty= флаг.

Вы также можете использовать команду reflog напрямую с --pretty= флаг для форматирования вывода.

git reflog --pretty='%cd %h %gd %gs'

В формате выше, %cd показывает дату фиксации слева от нормального вывода reflog.

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

git reflog --format='%C(auto)%h %<|(20)%gd %C(blue)%cr%C(reset) %gs (%s)'

В вышеуказанном формате %h это хеш коммита, %cr это относительная дата коммиттера, %gs является предметом рефлога, и, %s является предметом фиксации. Посмотрите на документы git-log для других возможных заполнителей. Например, используя %ci вместо %cr покажет абсолютные даты фиксации.

Вы можете сохранить это в вашем ~/.gitconfig используя пользовательский pretty форматировать и ссылаться на него через псевдоним:

[alias]
    rl = reflog --pretty=reflog
[pretty]
    reflog = %C(auto)%h %<|(20)%gd %C(blue)%cr%C(reset) %gs (%s)

Если вы просто хотите увидеть даты относительно текущего времени, вы можете использовать следующую команду:

      git reflog --date=relative

Чтобы сэкономить время на вводе текста, вы можете создать для него псевдоним git ( rl - Короче для reflog):

      git config --global alias.rl "reflog --date=relative"

Вместо этого используйте псевдоним, например, так ( -5 в конце - показать последние 5 действий):

      git rl -5

Расскажи git в каком формате либо засчитывается reflog Записи или время reflog записи, т.е.

$ git reflog @{now}

$ git reflog @{0}

Примечание Git 2.10 (3 квартал 2016 года) улучшает документацию о дате с git reflog,

См. Коммит 642833d, коммит 1a2a1e8 (27 июля 2016 г.) и коммит d38c7b2, коммит 522259d, коммит 83c9f95, коммит 2b68222 (22 июля 2016 г.) Джеффом Кингом ( peff)
Помогает: Джефф Кинг ( peff )
(Объединено Юнио С Хамано - gitster - в коммите 0d32799, 8 августа 2016 г.)

rev-list параметры обновлены:

Обозначение reflog в выходных данных может быть показано как ref@{Nth} (где Nth обратный хронологический индекс в журнале) или как ref@{timestamp} (с отметкой времени для этой записи), в зависимости от нескольких правил.

Включает в себя: - обновление о --date=raw:

показывает дату в секундах с начала эпохи (1970-01-01 00:00:00 UTC), затем пробел, а затем часовой пояс в виде смещения от UTC (a + или же - с четырьмя цифрами; первые два часа, а вторые два минуты).
Т.е. как будто отметка времени была отформатирована с strftime("%s %z")).
Обратите внимание, что -local опция не влияет на seconds-since-epoch значение (которое всегда измеряется в UTC), но переключает соответствующее значение часового пояса.

И новый вариант: --date=unix

показывает дату как метку времени эпохи Unix (секунды с 1970 года).
Как с --raw это всегда в UTC и, следовательно, -local не имеет никакого эффекта

Отформатируйте вывод как glol с охмызш:

      git reflog --pretty='%Cred%h%Creset -%C(auto)%d%Creset %gs %Cgreen(%cr) %C(bold blue)<%an>%Creset'

Отформатируйте git reflog вывод как glod с охмызш:

      git reflog --pretty='%Cred%h%Creset -%C(auto)%d%Creset %gs %Cgreen(%ad) %C(bold blue)<%an>%Creset'

Я сделал собственный плагин git-mnz для ohmyzsh с этими двумя псевдонимами grlol, grlod и некоторые другие псевдонимы и функции.

** Извините, если не отправили PR в плагин git, но есть сотни PR, ожидающих объединения ..

git reflog --pretty=medium

... но из-за них это действительно неприятно (нет завершения bash для параметров git-log, log страница руководства не документирует строки-заполнители для различных довольно встроенных профилей, плюс есть некоторые отличия от стандартных git-log формат, например, вам нужно будет передать --abbrev)

git log --walk-reflogs --date=iso

Другие вопросы по тегам