среда, 19 июня 2013 г.

Просмотр истории коммитов в Git

Блог переехал. Актуальная версия поста находится по адресу: http://aakinshin.net/ru/blog/git/log/.


Изучение истории коммитов — важная составляющая работы с репозиторием. Увы, ввиду ветвления с этой историей не всегда просто разобраться. Обычно я для этой цели пользуюсь различными визуальными оболочками, но не всегда есть такая возможность. Временами приходится пользоваться средствами консоли, а именно командой git log. Основы работы с этой командой можно почитать в чудесной книге ProGit. git log имеет множество различных полезных параметров. Рассмотрим несколько примеров их использования.

Древовидный вид

git log --graph --abbrev-commit --decorate --date=relative --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all
Выводим полный граф коммитов c сокращёнными хешами, ссылками на коммиты и относительной датой. Используемый формат: синий сокращённый хеш коммита, зелёная дата, белые сообщение и автор, жёлтые ссылки на коммит.

git log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset)%C(bold yellow)%d%C(reset)%n''          %C(white)%s%C(reset) %C(dim white)- %an%C(reset)' --all
Выводим полный граф коммитов c сокращёнными хешами, ссылками на коммиты и абсолютной датой. Используемый формат: синий сокращённый хеш коммита, голубая абсолютная дата, зелёная относительная дата, жёлтые ссылки на коммит, перевод строки, белые сообщение и автор.

git log --graph --oneline --all
Выводим полный граф коммитов, отводя по одной строке на коммит.

git log --graph --date-order --pretty=format:"<%h> %ad [%an] %Cgreen%d%Creset %s" --all --date=short
Выводим полный граф коммитов c сортировкой по дате, отображаемой в краткой форме. Используемый формат: сокращённый хеш, дата, автор, зелёные ссылки на коммит, сообщение.

Линейный вид

git log
Вывод списка коммитов с параметрами по умолчанию.

git log -p
Выводим список коммитов и показываем diff для каждого.

git log --stat
Выводим список коммитов и показываем статистику по каждому.

git log --pretty=oneline
Выводим список коммитов по одному на строчке.

git log --pretty=format:"%h - %an, %ar : %s"
Выводим список коммитов с использованием следуюещго формата: сокращённый хеш коммита, автор, относительная дата, сообщение.

Визуальный интерфейс

Если есть возможность, то всё таки коммиты приятнее изучать через специализированный интерфейс, а не из консоли. Лично я очень люблю GitExtensions:
Также удобно использовать встроенную утилиту gitk:

Полезные параметры

Все параметры команды git log не нужны, но некоторые самые полезные хорошо бы помнить. Приведу несколько примеров использования ходовых параметров.
  • --graph Показывать древовидную структуру графа истории в ASCII-виде
  • -5 Посмотреть последних пять коммитов
  • --skip=3 Пропустить три коммита
  • --pretty=oneline Отводить по одной строчке на коммит
  • --since="today" Показать коммиты за сегодня
  • --since=2.weeks Показать коммиты за последние две недели
  • -p Показывать diff каждого коммита
  • --decorate Показывать ссылки на этот коммит
  • --stat Показывать подробную статистику по каждому коммиту
  • --shortstat Показывать краткую статистику по каждому коммиту
  • --name-only Показывать список изменённых файлов
  • --name-status Показывать список изменённых файлов с информацией о них
  • --abbrev-commit Показывать только несколько первых цифр SHA-1
  • --relative-date Показывать дату в относительной форме
C помощью замечательного параметра --pretty=format:"" можно указать, какие именно данные о коммите нужно выводить, определив внутри кавычек общий паттерн, используя следующие обозначения:
  • %H Хеш коммита
  • %h Сокращённый хеш коммита
  • %d Имена ссылок на коммит
  • %s Сообщение к коммиту
  • %an Автор
  • %ad Дата автора
  • %cn Коммитер
  • %cd Дата коммитера
  • %Cred Переключить цвет на красный
  • %Cgreen Переключить цвет на зелёный
  • %Cblue Переключить цвет на синий
  • %Creset Сбросить цвет
Полный список обозначений можно найти в мануале, в разделе «PRETTY FORMATS».
При написании поста использовались:

Комментариев нет:

Отправить комментарий