При слиянии веток (например, двух или трёх) 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 — мощные инструменты для фильтрации истории коммитов. Они позволяют эффективно отсеивать автоматические коммиты слияния, сосредоточившись на коммитах, созданных непосредственно пользователем.