Git — фильтрация истории коммитов

Опубликовано: 1 Сентября, 2022

Инструмент управления версиями исходного кода 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