Як налаштувати "git log", щоб відобразити "дата фіксації"


127

Як я можу налаштувати git logпоказ commit dateзамість author date?


25
@Colleen Кожен комітет має дві дати, пов’язані - AuthorDate та CommitDate ( git show --pretty=fuller HEADдля прикладу). Для локального розвитку вони зазвичай однакові, але для патчів, доданих за допомогою електронної пошти чи інших механізмів, вони можуть відрізнятися, де AuthorDate - це дата, коли патч був сформований, і буття ActivDate, коли він був фактично застосований до сховища.
twalberg

Відповіді:


145

Існує кілька варіантів, щоб красиво роздрукувати дату. Напевно, найпростіше - просто використовувати один із заздалегідь запечених --prettyформатів, як-от git log --pretty=fuller- це покаже обидві дати. Якщо ви хочете побачити лише одну дату, але зробити це датою фіксації, ви можете використовувати git log --format=<some stuff>. Усі допустимі коди для визначення формату задокументовані в git help log. Фіксації дата є одним з %cd, %cD, %cr, %ctабо %ci, в залежності від того, якого формату ви віддаєте перевагу його.

Якщо ви хочете робити це часто, поставте його в псевдонімі або напишіть допоміжний сценарій, щоб заощадити на наборі тексту.


53

Ви можете використовувати --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якщо вам це коли-небудь знадобиться.
  • Ваші очі можуть швидко сканувати вміст різними кольорами.
  • Імена та електронні листи дуже корисні для великих проектів / org із багатьма учасниками.
  • Використання забарвлення за замовчуванням для хеш-реф, оскільки це вже досить добре.

Ось вихід git loldіз датами у форматі ISO. Корисно побачити точну дату / час вчинення зобов’язань, бонус за можливість легко бачити часовий пояс учасника.

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

Редагувати 2020-06 : Додано скріншоти. Оновлено для використання %C(auto)(автоматичне / за замовчуванням забарвлення) для %h(ввести хеш) та %d(посилання імен). Додано %cn(ім’я виконавця) на додаток до електронної пошти.


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 - вам потрібно скасувати "s для запуску вищевказаного рядка в терміналі"
стверджує

2
Виправлена ​​лінія: git log --graph --pretty = формат: "% C (жовтий)% h% Creset% C (cyan)% C (жирний)% d% Creset% C (cyan) (% 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.