Pro Git - страница 17
085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7 removed unnecessary test
a11bef06a3f659402fe7563abf99ad00de2209e6 first commit
Наиболее интересной опцией является format. Она позволяет создать свой формат для вывода информации. Особенно это может быть полезным когда вы хотите сгенерировать вывод для автоматического анализа – так как вы указываете формат явно, он не будет изменен даже после обновления Git:
$ git log --pretty=format:"%h - %an, %ar : %s"
ca82a6d - Scott Chacon, 6 years ago : changed the version number
085bb3b - Scott Chacon, 6 years ago : removed unnecessary test
a11bef0 - Scott Chacon, 6 years ago : first commit
Полезные опции для git log --pretty=format отображает наиболее полезные опции для изменения формата.
Опция | Описания вывода |
---|---|
%H | Хеш коммита |
%h | Сокращенный хеш коммита |
%T | Хеш дерева |
%t | Сокращенный хеш дерева |
%P | Хеш родителей |
%p | Сокращенный хеш родителей |
%an | Имя автора |
%ae | Электронная почта автора |
%ad | Дата автора (формат даты можно задать опцией --date=option) |
%ar | Относительная дата автора |
%cn | Имя коммитера |
%ce | Электронная почта коммитера |
%cd | Дата коммитера |
%cr | Относительная дата коммитера |
%s | Содержание |
Table 1. Полезные опции для git log --pretty=format |
Вам наверное интересно, какая же разница между автором и коммитером. Автор – это человек, изначально сделавший работу, а коммитер – это человек, который последним применил эту работу. Другими словами, если вы создадите патч для какого-то проекта, а один из основных членов команды этого проекта применит этот патч, вы оба получите статус участника – вы как автор и основной член команды как коммитер.
Опции oneline и format являются особенно полезными с опцией --graph команды log. С этой опцией вы сможете увидеть небольшой граф в формате ASCII, который показывает текущую ветку и историю слияний:
$ git log --pretty=format:"%h %s" --graph
* 2d3acf9 ignore errors from SIGCHLD on trap
* 5e3ee11 Merge branch 'master' of git://github.com/dustin/grit
|\
| * 420eac9 Added a method for getting the current branch.
* | 30e367c timeout code and tests
* | 5a09431 add timeout protection to grit
* | e1193f8 support for heads with slashes in them
|/
* d6016bc require time for xmlschema
* 11d191e Merge branch 'defunkt' into local
Данный вывод будет нам очень интересен в следующей главе, где мы рассмотрим ветвления и слияния.
Мы рассмотрели только несколько простых опций для форматирования вывода с помощью команды git log. На самом деле их немного больше. Наиболее распространенные опции для команды git log содержит описание как уже рассмотренных, так и нескольких новых опций, которые могут быть полезными в зависимости от нужного формата вывода.
Опция | Описание |
---|---|
-p | Показывает патч для каждого коммита. |
--stat | Показывает статистику измененных файлов для каждого коммита. |
--shortstat | Отображает только строку с количеством изменений/вставок/удалений для команды --stat. |
--name-only | Показывает список измененных файлов после информации о коммите. |
--name-status | Показывает список файлов, которые добавлены/изменены/удалены. |
--abbrev-commit | Показывает только несколько символов SHA-1 чек-суммы вместо всех 40. |
--relative-date | Отображает дату в относительном формате (например, "2 weeks ago") вместо стандартного формата даты. |
--graph | Отображает ASCII граф с ветвлениями и историей слияний. |
--pretty | Показывает коммиты в альтернативном формате. Возможные варианты опций: oneline, short, full, fuller и format (с помощью последней опции вы можете указать свой формат). |
Table 2. Наиболее распространенные опции для команды git log |
Ограничение вывода
В дополнение к опциям форматирования вывода, команда git log принимает несколько опций для ограничения вывода – опций, с помощью которых можно увидеть определенное подмножество коммитов. Вы уже видели одну из таких опций – это опция -2, которая показывает только последние два коммита. В действительности вы можете использовать -