Как я могу найти все коммиты с несколькими родителями в репозитории Git?

Я работаю над исследованием для изучения слияний в проектах с открытым исходным кодом.

Для каждого слияния в репо мне нужно найти базу (ближайший общий предок), два участника и итоговую объединенную фиксацию.

У меня уже есть представление о том, как получить ближайшего общего предка ( git merge-base rev1 rev2 ) и вкладчиков ( git log --pretty=%P -n 1 <commit> ), но у меня возникла проблема с определением коммитов, которые в результате операции слияния.

Как я могу найти все коммиты с несколькими родителями в репозитории Git?

Этого должно быть достаточно (для локального коммита)

  git rev-list --merges 

В git rev-list странице git rev-list упоминаются:

 --merges 

Печатать только слияния . Это точно так же, как --min-parents=2 .

Это означает, что rev-list содержит несколько интересных фильтров:

 --min-parents=<number> --max-parents=<number> 

Покажите только коммиты, которые имеют как минимум (или не более), что многие совершают.
В частности:

  • --max-parents=1 – это то же самое, что --max-parents=1 ,
  • --min-parents=2 – это то же самое, что и --merges .
  • --max-parents=0 дает все корневые коммиты и
  • --min-parents=3 все осьминоги сливаются .

Пытаться:

 git log --merges 

с соответствующим – --pretty разобрать выход.