Блог переехал. Актуальная версия поста находится по адресу: 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 сокращёнными хешами, ссылками на коммиты и относительной датой. Используемый формат: синий сокращённый хеш коммита, зелёная дата, белые сообщение и автор, жёлтые ссылки на коммит.
![](http://2.bp.blogspot.com/-SmZ8sGV2Yck/UcBvMcVLoKI/AAAAAAAAAC4/MGy2UoQH8gk/s400/git1.png)
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 сокращёнными хешами, ссылками на коммиты и абсолютной датой. Используемый формат: синий сокращённый хеш коммита, голубая абсолютная дата, зелёная относительная дата, жёлтые ссылки на коммит, перевод строки, белые сообщение и автор.
![](http://2.bp.blogspot.com/-g7q3IvkU7OU/UcBu5ot_zMI/AAAAAAAAACw/NPAKtaB-C3k/s400/git2.png)
git log --graph --oneline --allВыводим полный граф коммитов, отводя по одной строке на коммит.
![](http://4.bp.blogspot.com/-g0ndX6u8BTo/UcBvhWQGmkI/AAAAAAAAADA/_ATVUkz4UxM/s400/git3.png)
git log --graph --date-order --pretty=format:"<%h> %ad [%an] %Cgreen%d%Creset %s" --all --date=shortВыводим полный граф коммитов c сортировкой по дате, отображаемой в краткой форме. Используемый формат: сокращённый хеш, дата, автор, зелёные ссылки на коммит, сообщение.
![](http://4.bp.blogspot.com/-3C_1_lx2bHE/UcBwCI2R5EI/AAAAAAAAADI/IWN95DCjYGA/s400/git4.png)
Линейный вид
git logВывод списка коммитов с параметрами по умолчанию.
![](http://1.bp.blogspot.com/-QHO0zXQWqhg/UcBxDJ34o9I/AAAAAAAAADU/QsQG4y93bUc/s400/git5.png)
git log -pВыводим список коммитов и показываем diff для каждого.
![](http://2.bp.blogspot.com/-34Ts5e3T670/UcBxXKdqLwI/AAAAAAAAADc/unzelAp1BTI/s400/git6.png)
git log --statВыводим список коммитов и показываем статистику по каждому.
![](http://4.bp.blogspot.com/-94qWq9G2gJU/UcBxseKUXLI/AAAAAAAAADk/6yjs_JQOb2U/s400/git7.png)
git log --pretty=onelineВыводим список коммитов по одному на строчке.
![](http://4.bp.blogspot.com/-kZNfdX5Mck4/UcByGGe9-NI/AAAAAAAAADs/Easqz2QCSNw/s400/git8.png)
git log --pretty=format:"%h - %an, %ar : %s"Выводим список коммитов с использованием следуюещго формата: сокращённый хеш коммита, автор, относительная дата, сообщение.
![](http://3.bp.blogspot.com/-_Kh_NONAkdw/UcByXjrOljI/AAAAAAAAAD0/JWUyghn9CQY/s400/git9.png)
Визуальный интерфейс
Если есть возможность, то всё таки коммиты приятнее изучать через специализированный интерфейс, а не из консоли. Лично я очень люблю GitExtensions:![](http://1.bp.blogspot.com/-9DHliAmNVSA/UcB3NbSUqWI/AAAAAAAAAEc/AVRZarYXFIs/s400/git-extensions.png)
Также удобно использовать встроенную утилиту gitk:
![](http://1.bp.blogspot.com/-w-BSYDxNQlg/UcB20-0ffNI/AAAAAAAAAEU/kF4aZcuttwQ/s400/gitk.png)
Полезные параметры
Все параметры команды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
Показывать дату в относительной форме
--pretty=format:""
можно указать, какие именно данные о коммите нужно выводить, определив внутри кавычек общий паттерн, используя следующие обозначения:
%H
Хеш коммита%h
Сокращённый хеш коммита%d
Имена ссылок на коммит%s
Сообщение к коммиту%an
Автор%ad
Дата автора%cn
Коммитер%cd
Дата коммитера%Cred
Переключить цвет на красный%Cgreen
Переключить цвет на зелёный%Cblue
Переключить цвет на синий%Creset
Сбросить цвет
При написании поста использовались:
Комментариев нет:
Отправить комментарий