Как настроить 'git log' на отображение 'даты фиксации'

128

Как я могу настроить git logпоказ commit dateвместо author date?

Майкл
источник
25
@Colleen У каждой фиксации есть две связанные даты - AuthorDate и CommitDate ( git show --pretty=fuller HEADдля примера). Для локальной разработки они обычно одинаковы, но для исправлений, добавленных по электронной почте или с помощью других механизмов, они могут отличаться, где AuthorDate - это дата создания исправления, а CommitDate - это время, когда оно было фактически применено к репозиторию.
twalberg 09

Ответы:

145

Есть несколько вариантов красивой печати даты. Вероятно, самый простой - просто использовать один из предварительно запеченных --prettyформатов, например git log --pretty=fuller- это покажет обе даты. Если вы хотите видеть только одну дату, но сделать ее датой фиксации, вы можете использовать git log --format=<some stuff>. Все допустимые коды для определения формата задокументированы в git help log. Фиксации дата является одним из %cd, %cD, %cr, %ctили %ci, в зависимости от того, какого формата вы предпочитаете его.

Если это то, что вы хотите делать часто, укажите это в псевдониме или напишите вспомогательный скрипт, чтобы сэкономить на вводе.

twalberg
источник
54

Вы можете использовать --pretty=formatи использовать %crдля относительной даты фиксации.

Например:

$ git log --graph --pretty=format:'%C(auto)%h%d (%cr) %cn <%ce> %s'

Вы можете определить псевдоним в git, чтобы упростить его использование. У меня в наличии есть .gitconfig:

[alias]
# see `git help log` for detailed help.
#   %h: abbreviated commit hash
#   %d: ref names, like the --decorate option of git-log(1)
#   %cn: commiter name
#   %ce: committer email
#   %cr: committer date, relative
#   %ci: committer date, ISO 8601-like format
#   %an: author name
#   %ae: author email
#   %ar: author date, relative
#   %ai: author date, ISO 8601-like format
#   %s: subject
# my awesome git log replacement
lol  = log --graph --pretty=format:\"%C(auto)%h%d%Creset %C(cyan)(%cr)%Creset %C(green)%cn <%ce>%Creset %s\"
# same as above, but ISO date
lold = log --graph --pretty=format:\"%C(auto)%h%d%Creset %C(cyan)(%ci)%Creset %C(green)%cn <%ce>%Creset %s\"
# using build-in standards
lol2 = log --oneline --graph --decorate
# shows branches and their last commits
lol3 = log --all --graph --decorate --oneline --simplify-by-decoration

В Linux или аналогичных системах вы можете использовать одинарные кавычки 'вместо двойных кавычек ":

[alias]
lol = log --graph --pretty=format:'%C(auto)%h%d%Creset %C(cyan)(%cr)%Creset %C(green)%cn <%ce>%Creset %s'

С этим просто запустите git lolили другие варианты, чтобы увидеть красивый результат.

Вот результат git lol --simplify-by-decoration:

git lol вывод

  • Выглядит хорошо. :)
  • lolлегче набирать log, и звучит лучше.
    • Также дает вам доступ к обычным, git logесли вам когда-нибудь понадобится.
  • Ваши глаза могут быстро сканировать содержимое с помощью разных цветов.
  • Имена и адреса электронной почты очень полезны для крупных проектов / организаций с большим количеством участников.
  • Использование цвета по умолчанию для hash / ref, так как это уже довольно хорошо.

Вот результат git loldс датами в формате ISO. Полезно для просмотра точной даты / времени совершения фиксации, с бонусом в виде возможности легко увидеть часовой пояс участника.

введите описание изображения здесь

Изменить 2020-06 : добавлены скриншоты. Обновлено для использования %C(auto)(авто / раскраска по умолчанию) для %h(хеш фиксации) и %d(имена ссылок). Добавлено %cn(имя коммитера) в дополнение к электронной почте.

raychi
источник
1
Я получаю сообщение об ошибке синтаксического анализа: git log --graph --pretty=format:\"%C(yellow)%h%Creset%C(cyan)%C(bold)%d%Creset %C(cyan)(%cr)%Creset %C(green)%ce%Creset %s\" bash: синтаксическая ошибка рядом с неожиданным токеном `('
frakman1
2
@ frakman1 - вам нужно отменить экранирование, чтобы указанная выше строка запускалась в терминале
stites
2
Исправленная строка: git log --graph --pretty = format: "% C (желтый)% h% Creset% C (голубой)% C (жирный)% d% Creset% C (голубой) (% cr)% Creset% C (зеленый)% ce% Creset% s "
RedSands
1

Я предпочитаю этот формат, без имени автора и фактической даты фиксации.

git log --graph --pretty=format:"%C(yellow)%h%x09%Creset%C(cyan)%C(bold)%ad%Creset  %C(green)%Creset %s" --date=short
Патрик Стейл
источник