Самый короткий возможный вывод из журнала git, содержащий автора и дату
Как я могу показать вывод журнала git с (по крайней мере) этой информацией:
* author
* commit date
* change
Я хочу, чтобы он был сжат до одной строки в записи журнала. Какой для этого самый короткий формат?
(попробовал --format=oneline
, но это не показывает дату)
Ответы
Ответ 1
git log --pretty=format:"%h%x09%an%x09%ad%x09%s"
сделал работу. Это выводит:
fbc3503 mads Thu Dec 4 07:43:27 2008 +0000 show mobile if phone is null...
ec36490 jesper Wed Nov 26 05:41:37 2008 +0000 Cleanup after [942]: Using timezon
ae62afd tobias Tue Nov 25 21:42:55 2008 +0000 Fixed #67 by adding time zone supp
164be7e mads Tue Nov 25 19:56:43 2008 +0000 fixed tests, and a 'unending appoi
93f1526 jesper Tue Nov 25 09:45:56 2008 +0000 adding time.ZONE.now as time zone
2f0f8c1 tobias Tue Nov 25 03:07:02 2008 +0000 Timezone configured in environment
a33c1dc jesper Tue Nov 25 01:26:18 2008 +0000 updated to most recent will_pagina
Вдохновленный fooobar.com/questions/26941/..., я обнаружил, что могу добавить именно те параметры, которые мне нужны.
Чтобы сократить дату (не показывая время), используйте --date=short
В случае, если вам было интересно, какие варианты были:
%h
= сокращенный хеш коммита
%x09
= табуляция (символ для кода 9)
%an
= имя автора
%ad
= дата автора (формат относится к --date = опция)
%s
= тема
Из kernel.org/pub/software/scm/git/docs/git-log.html (раздел PRETTY FORMATS) комментарием Vivek.
Ответ 2
Я использую эти два параметра .gitconfig:
[log]
date = relative
[format]
pretty = format:%h %Cblue%ad%Creset %ae %Cgreen%s%Creset
% ad - это дата автора, которая может быть переопределена --date
или опцией, указанной в строке [log] в .gitconfig.
Мне нравится относительная дата, потому что это дает немедленное ощущение того, когда все закончилось.
Результат выглядит следующим образом:
6c3e1a2 2 hours ago [email protected] lsof is a dependency now.
0754f18 11 hours ago [email protected] Properly unmount, so detaching works.
336a3ac 13 hours ago [email protected] Show ami registration command if auto register fails
be2ad45 17 hours ago [email protected] Fixes #6. Sao Paolo region is included as well.
5aed68e 17 hours ago [email protected] Shorten while loops
Это, конечно, цвет, поэтому легко различать различные части строки журнала.
Также это значение по умолчанию при вводе git log
из-за раздела [format].
2014 ОБНОВЛЕНИЕ:
Поскольку git теперь поддерживает отступы, у меня есть хорошая поправка к версии выше:
pretty = format:%C(yellow)%h %Cblue%>(12)%ad %Cgreen%<(7)%aN%Cred%d %Creset%s
Это правое выравнивание относительных дат и левых выравниваний имен коммандеров, что означает, что вы получаете похожий на столбцы вид, который легко на глаза.
Скриншот
![ss # 1]()
2016 UPDATE: Поскольку подписание GPG-фиксации становится чем-то, я подумал, что обновляю этот пост с версией, которая включает проверку подписи (на скриншоте это пурпурное письмо сразу после фиксации). Краткое объяснение флага:
% G: показать "G" для хорошей (действительной) подписи "B" для плохой подписи "U" для хорошей подписи с неизвестной достоверностью и "N" для отсутствия подписи
Другие изменения включают:
- цвета теперь удаляются, если вывод имеет значение, отличное от tty (что полезно для grepping и т.д.).
-
git log -g
теперь содержит селектор reflog.
- Сохраните 2 паранса на refnames и поместите их в конец (чтобы сохранить выравнивание столбцов)
- Усечь относительные даты, если они слишком длинны (например,
3 years, 4..
)
- Обрезайте имена коммитеров (может быть немного коротким для некоторого ppl, просто измените
%<(7,trunc)
или проверьте git.mailmap для сокращения имен коммитеров)
Здесь config:
pretty = format:%C(auto,yellow)%h%C(auto,magenta)% G? %C(auto,blue)%>(12,trunc)%ad %C(auto,green)%<(7,trunc)%aN%C(auto,reset)%s%C(auto,red)% gD% D
Все выравнивание столбцов теперь сохраняется намного лучше за счет некоторых (надеюсь) бесполезных персонажей.
Не стесняйтесь редактировать, если у вас есть какие-либо улучшения, я бы хотел, чтобы цвет сообщения зависел от того, подписан ли коммит, но это не похоже на то, что это возможно.
Скриншот
![Снимок экрана из git log]()
Ответ 3
git log --pretty=format:"%H %an %ad"
используйте --date=
для установки формата даты
git log --pretty=format:"%H %an %ad" --date=short
Ответ 4
Не стесняйтесь использовать это:
git log --pretty="%C(Yellow)%h %C(reset)%ad (%C(Green)%cr%C(reset))%x09 %C(Cyan)%an: %C(reset)%s"
Посмотрите:
![pretty git log example]()
Ответ 5
tig является альтернативой использованию команды git log, доступной в основных дистрибутивах с открытым исходным кодом * nix.
В debian или ubuntu попробуйте установить и запустить следующим образом:
$ sudo apt-get install tig
(устанавливается tig)
$ tig
(журнал отображается в пейджере следующим образом, с текущим хешем фиксации внизу)
2010-03-17 01:07 ndesigner changes to sponsors list
2010-03-17 00:19 rcoder Raise 404 when an invalid year is specified.
2010-03-17 00:06 rcoder Sponsors page now shows sponsors' level.
-------------------------- skip some lines ---------------------------------
[main] 531f35e925f53adeb2146dcfc9c6a6ef24e93619 - commit 1 of 32 (100%)
Так как уценка не поддерживает раскраску текста, представьте: столбец 1: синий; столбец 2: зеленый; столбец 3: цвет текста по умолчанию. Последняя строка выделена. Нажмите Q или q, чтобы выйти.
tig
оправдывает столбцы без оборванных ребер, вкладка ascii (% x09) не гарантирует.
Для короткого формата даты удалите капитал D (обратите внимание: строчный d открывает представление diff.) Настройте его навсегда, добавив show-date = short
to ~/.tigrc; или в разделе [tig]
в .git/configure или ~/.gitconfig.
Чтобы увидеть изменение целиком:
- нажмите Введите. В нижней части окна откроется субпанель.
- используйте клавиши k, j, чтобы прокрутить изменение в дополнительной панели.
- в то же время используйте клавиши вверх, вниз, чтобы перейти от фиксации к фиксации.
Так как tig отделен от git и, по-видимому, * nix специфическим, он, вероятно, требует, чтобы cygwin устанавливался в windows. Но для fedora я считаю, что команды установки $ su
, (enter root password)
, # yum install tig
. Для freebsd попробуйте % su
, (enter root password)
, # pkg_add -r tig
.
Кстати, tig хорош для гораздо большего, чем быстрый просмотр журнала:
Screenshots &
Manual
Ответ 6
git log --pretty=format:'%h %ad %s (%an)' --date=short
или
git log --pretty=format:'%h %ad %s | %an' --date=short
... riffing on cdunn2001 ответ выше: я бы потерял автора e = mail и включил только имя автора, как и Jesper и knittl, но в соответствии с идеей cdunn2001 поддерживать вывод в столбцах постоянной ширины для удобства чтения (отличная идея!). Однако вместо отдельного столбца с левым выравниванием имени автора я переношу этот флаг в конце команды скобками или смещаю его с помощью трубы. (На самом деле может быть любой символ, который служит визуальной помощью при чтении вывода... хотя может иметь смысл избежать обратных или косых черт, чтобы уменьшить запутывание вывода с помощью каталога или чего-то еще.)
Пример вывода:
6fdd155 2015-08-10 Fixes casting error in doSave | John Doe
c4f4032 2015-08-10 Fix for IE save. Add help button. | Jane
29a24a6 2015-08-10 Fixes bug in Course | Mac
Ответ 7
Используйте предопределенный псевдоним git, то есть:
$ git work
Создается один раз по команде:
$ git config --global alias.work 'log --pretty=format:"%h%x09%an%x09%ad%x09%s"'
https://git-scm.com/book/tr/v2/Git-Basics-Git-Aliases
Или более цветной с графиком:
$ git config --global alias.work 'log --pretty=format:"%C(yellow)%h %ar %C(auto)%d %Creset %s , %Cblue%cn" --graph --all'
![enter image description here]()
Ответ 8
git log --pretty=format:'%h %ad %s%x09%ae' --date=short
Результат:
e17bae5 2011-09-30 Integrate from development -> main [email protected]
eaead2c 2011-09-30 More stuff that is not worth mentioning [email protected]
eb6a336 2011-09-22 Merge branch 'freebase' into development [email protected]
Первой. Наименее важная часть - домен электронной почты - является последней и легко фильтруется.
Ответ 9
Чтобы показать коммиты, которые я поставил, которые готовы нажать, я делаю
git log remotes/trunk~4..HEAD --pretty=format:"%C(yellow)%h%C(white) %ad %aN%x09%d%x09%s" --date=short | awk -F'\t' '{gsub(/[, ]/,"",$2);gsub(/HEAD/, "\033[1;36mH\033[00m",$2);gsub(/master/, "\033[1;32mm\033[00m",$2);gsub(/trunk/, "\033[1;31mt\033[00m",$2);print $1 "\t" gensub(/([\(\)])/, "\033[0;33m\\1\033[00m","g",$2) $3}' | less -eiFRXS
Результат выглядит примерно так:
ef87da7 2013-01-17 haslers (Hm)Fix NPE in Frobble
8f6d80f 2013-01-17 haslers Refactor Frobble
815813b 2013-01-17 haslers (t)Add Wibble to Frobble
3616373 2013-01-17 haslers Add Foo to Frobble
3b5ccf0 2013-01-17 haslers Add Bar to Frobble
a1db9ef 2013-01-17 haslers Add Frobble Widget
Где первый столбец отображается желтым цветом, а "H" "m" и "t" в родительском выражении показывают HEAD, мастер и туловище и отображаются в их обычных цветах "-decorate"
Вот он с разрывами строк, чтобы вы могли видеть, что он делает:
git log remotes/trunk~4..HEAD --date=short
--pretty=format:"%C(yellow)%h%C(white) %ad %aN%x09%d%x09%s"
| awk -F'\t' '{
gsub(/[, ]/,"",$2);
gsub(/HEAD/, "\033[1;36mH\033[00m",$2);
gsub(/master/, "\033[1;32mm\033[00m",$2);
gsub(/trunk/, "\033[1;31mt\033[00m",$2);
print $1 "\t" gensub(/([\(\)])/, "\033[0;33m\\1\033[00m","g",$2) $3}'
У меня есть псевдоним "поставил":
git config alias.staged '!git log remotes/trunk~4..HEAD --date=short --pretty=format:"%C(yellow)%h%C(white) %ad %aN%x09%d%x09%s" | awk -F"\t" "{gsub(/[, ]/,\"\",\$2);gsub(/HEAD/, \"\033[1;36mH\033[00m\",\$2);gsub(/master/, \"\033[1;32mm\033[00m\",\$2);gsub(/trunk/, \"\033[1;31mt\033[00m\",\$2);print \$1 \"\t\" gensub(/([\(\)])/, \"\033[0;33m\\\\\1\033[00m\",\"g\",\$2) \$3}"'
(Есть ли более простой способ избежать этого? Было немного сложно разработать, что нужно ускользнуть)
Ответ 10
Во всех вышеупомянутых предложениях используйте %s
placeholder для темы. Я рекомендую использовать %B
, потому что %s
форматирование сохраняет новые строки, и несколько сообщений о фиксации строк появляются раздавленными.
git log --pretty=format:"%h%x09%an%x09%ai%x09%B"
Ответ 11
Запустите это в папке проекта:
$ git log --pretty=format:"%C(yellow)%h %ar %C(auto)%d %Creset %s , %Cblue%cn" --graph --all
И если хотите, добавьте эту строку в свой файл ~/.gitconfig:
[alias]
...
list = log --pretty=format:\"%C(yellow)%h %ar %C(auto)%d %Creset %s, %Cblue%cn\" --graph --all