Фильтровать слияния в Git log: советы и примеры

При слиянии веток (например, двух или трёх) Git использует быструю перемотку (fast-forward merge) или трёхстороннее слияние (three-way merge). Трёхстороннее слияние создаёт новый коммит слияния — автоматический коммит, созданный Git, а не человеком. Поэтому часто полезно отфильтровать коммиты слияния, особенно если их много, и нужны только коммиты, сделанные людьми. Аналогично, можно отфильтровать все коммиты, кроме коммитов слияния.

Фильтрация коммитов слияния

Для отображения только коммитов слияния используется команда:

git log --merges

Добавление параметра -1 ограничивает вывод одним коммитом:

git log --merges -1

Результат покажет только коммиты слияния. Например, вы увидите запись вида: branch ‘sinker improvements’ was merged into ‘their branch’, где указан SHA-1 хеш коммита слияния.

Фильтрация всех коммитов, кроме коммитов слияния

Для отображения всех коммитов, кроме коммитов слияния, используется команда:

git log --no-merges

Эта команда покажет только коммиты, созданные людьми или другими процессами, за исключением автоматических коммитов слияния.

Практическое применение

Перейдите в репозиторий:

cd /путь/к/репозиторию

И выполните команды:

git log --merges

(покажет коммиты слияния)

git log --no-merges

(покажет все коммиты, кроме коммитов слияния)

Эти команды особенно полезны в репозиториях с большим количеством автоматических коммитов слияния, когда необходимо просмотреть только коммиты, созданные вручную.

Команды git log —merges и git log —no-merges — мощные инструменты для фильтрации истории коммитов. Они позволяют эффективно отсеивать автоматические коммиты слияния, сосредоточившись на коммитах, созданных непосредственно пользователем.

Что будем искать? Например,программа