Как настроить git log
для отображения commit date
вместо author date
?
Как настроить «git log» для отображения «даты фиксации»
Ответы (4)
Существует несколько вариантов красивой печати даты. Вероятно, проще всего просто использовать один из предварительно запеченных форматов --pretty
, например git log --pretty=fuller
, — это покажет обе даты. Если вы хотите увидеть только одну дату, но сделать ее датой фиксации, вы можете использовать git log --format=<some stuff>
. Все допустимые коды для определения формат задокументирован в git help log
. Дата фиксации — одна из %cd
, %cD
, %cr
, %ct
или %ci
, в зависимости от того, какой формат вы предпочитаете.
Если это то, что вы хотите делать часто, поместите это в псевдоним или напишите вспомогательный скрипт, чтобы сэкономить на наборе текста.
Вы можете использовать --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
:
- Это выглядит хорошо. :)
lol
is easier to type thanlog
, and sounds better too.- Also gives you access to the regular
git log
if you ever need it.
- Also gives you access to the regular
- Ваши глаза могут быстро сканировать содержимое по разным цветам.
- Имена и адреса электронной почты очень полезны для крупных проектов/организаций со многими участниками.
- Использование раскраски по умолчанию для hash/ref, так как это уже довольно хорошо.
Вот вывод git lold
с датами в формате ISO. Полезно видеть точную дату/время фиксации, с бонусом в виде возможности легко увидеть часовой пояс участника.
Edit 2020-06: добавлены скриншоты. Обновлено для использования %C(auto)
(автоматическая окраска/цвет по умолчанию) для %h
(хэш фиксации) и %d
(имена ссылок). Добавлено %cn
(имя коммитера) в дополнение к электронной почте.
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: синтаксическая ошибка рядом с неожиданным токеном `('
- person frakman1; 31.03.2016
Я предпочитаю этот формат, не включает имя автора и включает фактическую дату фиксации.
git log --graph --pretty=format:"%C(yellow)%h%x09%Creset%C(cyan)%C(bold)%ad%Creset %C(green)%Creset %s" --date=short
git show --pretty=fuller HEAD
для примера). Для локальной разработки они обычно одинаковы, но для исправлений, добавляемых по электронной почте или другими способами, они могут различаться, где AuthorDate — это дата создания исправления, а CommitDate — дата, когда оно было фактически применено к репозиторию. - person twalberg   schedule 09.01.2013