Я пытаюсь отобразить последний коммит в Git, но мне нужна дата в специальном формате.
Я знаю, что формат журнала довольно %ad
уважает --date
формат, но единственный --date
формат, который я могу найти, это «короткий». Я хочу знать другие, и могу ли я создать пользовательский, такой как:
git -n 1 --date=**YYMMDDHHmm** --pretty=format:"Last committed item in this release was by %%an, %%aD, message: %%s(%%h)[%%d]"
git
command-line
ar3
источник
источник
--date=iso-strict
: см. Мой ответ ниже--date=(relative|local|default|iso|iso-strict|rfc|short|raw)
, у вас также будет:--date=(relative-local|default-local|iso-local|iso-strict-local|rfc-local|short-local|raw-local)
Ответы:
Другие (из
git help log
):Я не знаю встроенного способа создания собственного формата, но вы можете использовать магию оболочки.
Первый шаг здесь дает вам отметку времени в миллисекунду. Вы можете изменить вторую строку, чтобы отформатировать эту временную метку по своему усмотрению. Этот пример дает вам нечто похожее на
--date=local
мягкий день.И если вы хотите постоянный эффект, не вводя это каждый раз, попробуйте
Или, чтобы повлиять на все ваше использование Git с этим аккаунтом
источник
git config log.date iso
или, чтобы повлиять на все использование Git с этой учетной записьюgit config --global log.date iso
--format:<args>
перейдет<args>
в strftime.В дополнение к тому
--date=(relative|local|default|iso|iso-strict|rfc|short|raw)
, как уже упоминали другие, вы также можете использовать собственный формат даты журнала сЭто выводит что-то вроде
2016-01-13 11:32:13
.ПРИМЕЧАНИЕ: если вы посмотрите на коммит, связанный с ниже, я думаю, вам понадобится хотя бы Git v2.6.0-rc0для того, чтобы это сработало.
В полной команде это было бы что-то вроде:
Я не смог найти это нигде в документации (если кто-то знает, где его найти, пожалуйста, прокомментируйте), поэтому я изначально нашел заполнители методом проб и ошибок.
В моем поиске документации по этому вопросу я обнаружил коммит для самого Git, который указывает, что формат подается напрямую
strftime
. Поискstrftime
( здесь или здесь ) заполнителей, которые я нашел, соответствует перечисленным заполнителям.Заполнители включают в себя:
В полной команде это было бы что-то вроде
источник
git config --global alias.lg "log --graph --decorate -30 --all --date-order --date=format:'%Y-%m-%d %H:%M:%S' --pretty=format:'%C(cyan)%h%Creset %C(black bold)%ad%Creset%C(auto)%d %s'"
git lg
и я все еще получаю следующую ошибку.fatal: unknown date format format:%Y-%m-%d %H:%M:%S
, Я бегу мерзавец на окнах. Вот моя мерзавская версия.git version 1.9.5.msysgit.1
, Так нужно ли мне обновляться до более новой версии?%X
, ~~ Я только что попробовал это на своей машине и определенно получил время в моем часовом поясе. ~~ Хм, теперь я не уверен. Я клонировал репо от кого-то не в моем часовом поясе и попытался снова. Я думаю, что я просто получаю время, отформатированное с использованием текущих настроек локали, но с отключенным часовым поясом.После долгих поисков способа
git log
вывода даты в форматеYYYY-MM-DD
, который бы работалless
, я пришел к следующему формату:вместе с выключателем
--date=iso
.Это напечатает дату в формате ISO (длинная), а затем напечатает 14 раз символ возврата (0x08), который, в моем терминале, эффективно удаляет все после части YYYY-MM-DD. Например:
Это дает что-то вроде:
Я создал псевдоним
l
с некоторыми настройками в формате выше. Он показывает граф фиксации слева, затем хеш коммита, за которым следуют дата, короткие имена, имена ссылок и тема. Псевдоним выглядит следующим образом (в ~ / .gitconfig):источник
--date=short shows only date but not time, in YYYY-MM-DD format.
| sort | uniq
не работают.%C(bold cyan)%ai%x08%x08%x08%x08%x08%x08%x08%x08%x08%C(reset) %C(bold green)(%ar%x08%x08%x08%x08)%C(reset)
чтобы получить формат2015-01-19 11:27 (11 days)
. +1Вы можете использовать опцию усечения поля, чтобы избежать такого количества
%x08
символов. Например:эквивалентно:
И немного легче на глазах.
Еще лучше, в этом конкретном примере, использование
%cd
будет учитывать--date=<format>
, так что если вы хотитеYYYY-MM-DD
, вы можете сделать это, избегая%<
и%x08
полностью:Я только заметил, что это было немного круглым относительно оригинального сообщения, но я оставлю это в случае, если другие прибудут сюда с теми же параметрами поиска, которые я сделал.
источник
Мне нужно было то же самое, и я нашел следующее:
--date=format
Форматирует вывод даты , когда--pretty
говорит , что печатать.источник
git log --pretty=format:"%h%x09%cd%x09%s" --date=format:'%Y-%m-%d %H:%M:%S %p'
Помните о
date=iso
формате " ": это не совсем ISO 8601 .Смотрите коммит " 466fb67 " от Бит Болли (
bbolli
) , для Git 2.2.0 (ноябрь 2014)довольно: обеспечить строгий формат даты ISO 8601
Смотрите эту ветку для обсуждения.
источник
Обратите внимание, что это преобразует ваш местный часовой пояс, в случае, если это имеет значение для вашего варианта использования.
источник
Git 2.7 (четвертый квартал 2015 года) будет представлен
-local
в качестве инструкции.Это означает, что помимо:
у вас также будет:
-local
Суффикс не может использоваться сraw
илиrelative
. Ссылка .Теперь вы можете запросить любой формат даты, используя местный часовой пояс . Видеть
johnkeeping
) .Смотрите коммит add00ba , коммит 547ed71 (03 сентября 2015 г.) Джеффа Кинга (
peff
) .(Слиты Junio C Hamano -
gitster
- в фиксации 7b09c45 , 05 окт 2015)В частности, последний из вышеперечисленных (commit add00ba) упоминает:
источник
format-local
тоже работает! Так что это очень прекрасно, что объединить власть между любимым форматом и местным.Вариант формата
%ai
был то, что я хотел:источник
В Git 2.21 (Q1 2019) введен новый формат даты "
--date=human
", который изменяет свой вывод в зависимости от того, как далеко время от текущего времени .«
--date=auto
» может использоваться для использования этого нового формата, когда вывод идет на пейджер или на терминал и в противном случае формат по умолчанию.См. Коммит 110a6a1 , коммит b841d4f (29 января 2019 г.) и коммит 038a878 , коммит 2fd7c22 (21 января 2019 г.) Стивена П. Смита (``) .
Смотрите коммит acdd377 (18 января 2019) Линуса Торвальдса (
torvalds
) .(Слиты Junio C Hamano -
gitster
- в фиксации ecbe1be , 7 февраля 2019)Git 2.24 (Q4 2019) упростил код.
См. Коммит 47b27c9 , коммит 29f4332 (12 сентября 2019 г.) Стивена П. Смита (``) .
(Слиты Junio C Hamano -
gitster
- в фиксации 36d2fca , 07 окт 2019)источник
источник
Используйте Bash и команду date, чтобы преобразовать из формата, подобного ISO, в тот, который вы хотите. Я хотел формат даты в режиме org (и элемент списка), поэтому я сделал это:
И результат, например:
источник