Git — фильтрация истории коммитов
Инструмент управления версиями исходного кода Git предоставляет множество функций. Одной из самых важных и полезных функций является журнал или история. Мы можем использовать команду git log для вывода списка, фильтрации и просмотра истории коммитов различными способами. Здесь мы подробно рассмотрим использование команды git log с примерами.
Список истории коммитов: мы начнем с команды git log без каких-либо параметров. Это отобразит всю историю коммитов в интерактивном терминале, где мы можем видеть и перемещаться.
$ git log
На выходе мы видим следующую информацию о предоставленной фиксации.
- Номер фиксации, который является уникальным хешем, идентифицирующим фиксацию.
- Автор разработчик, который совершает. Также предоставляется информация по электронной почте
- Дата указывает, когда произошла фиксация
- Последняя строка содержит примечания и информацию о коммите.
Список одного коммита в строке: если нам нужно указать только уникальную часть идентификатора коммита с примечанием, предоставленным автором, мы можем использовать опцию –oneline, которая просто напечатает одну строку о каждом коммите.
$ git log --oneline
Распечатать статистику: нам может понадобиться распечатать подробную информацию о коммите. Мы будем использовать опцию –stat.
$ git log --stat
На выходе мы видим дополнительную информацию, такую как измененный файл, количество измененных файлов, количество добавленных строк, количество удаленных строк.
Печать информации об исправлениях или различиях: если нас интересует информация о различиях кода, нам нужно использовать параметр -p. Опцию -p можно использовать для печати пути или различия файлов для коммитов.
$ git log -p
Мы видим на скриншоте, что добавленный и удаленный код показан четко. Добавленный код имеет зеленый цвет, а удаленный код — красный. Также добавленные строки кода начинаются с плюса, а удаленные строки кода начинаются с минуса.
Показать/распечатать конкретную фиксацию в деталях: если нам нужно просмотреть конкретную фиксацию, нам нужно использовать команду git show. Мы также предоставим идентификатор фиксации или номер, который мы можем распечатать.
$ git show b1efd742499b00eef970feeef84dc64f301db61f
Мы видим, что конкретный коммит предоставляет подробную информацию о различиях.
Показать / распечатать конкретную статистику фиксации: если мы не можем просто распечатать конкретную статистику фиксации и информацию, мы можем предоставить параметр –stat для команды git show.
$ git show --stat b1efd742499b00eef970feeef84dc64f301db61f
Группировать коммиты по автору: если мы хотим проверить коммиты по имени автора, нам нужно сгруппировать коммиты по автору. Мы можем использовать команду shortlog для вывода списка заметок о коммитах, сгруппированных по имени автора.
$ git shortlog
Показать номера авторских коммитов: если нас интересуют номера авторских коммитов, нам нужно предоставить опции -s команде shortlog. Это предоставит номера коммитов для каждого автора.
$ git shortlog -s
Сортировка авторов по номерам коммитов: мы можем улучшить предыдущие примеры и отсортировать авторов по их номерам коммитов. Мы также добавим -n в предыдущий пример, где окончательная команда будет такой, как показано ниже.
$ git shortlog -n -s
Pretty Print: мы также можем настроить вывод журнала в соответствии с нашими потребностями. Мы можем использовать опцию –pretty и некоторые параметры для вывода другого лога. Здесь, в этом примере, мы будем использовать %cn для имени автора, %h хеш-значения фиксации и %cd для времени фиксации.
$ git log --pretty="%cn committed %h on %cd"
Фильтровать по автору: в некоторых случаях нам может понадобиться отфильтровать коммиты по имени автора. Мы будем использовать –author и указать имя автора, чтобы отфильтровать и показать только данного автора. В этом примере мы будем фильтровать автора по имени dmiller.
$ git log --author="dmiller"
Фильтр по номеру: если мы хотим перечислить и распечатать указанное количество коммитов, которые нам нужно использовать, — с номером, который мы хотим напечатать. В этом примере мы напечатаем последние 5 коммитов.
$ git log -5 --oneline
Список только слияний: по умолчанию коммиты слияния распечатываются и отображаются в списке. Но если поведение по умолчанию изменено с помощью config, и мы хотим вывести список и распечатать коммиты слияния, мы можем использовать опцию –merge для вывода списка коммитов слияния.
$ git log --merge
Список без слияний: по умолчанию коммиты слияний распечатываются и перечисляются с помощью команды git log. Если мы не хотим перечислять или печатать, то для всех операций мы можем использовать опцию –no-merges, которая не будет отображать коммиты слияния.
$ git log --no-merge