Это в основном верно.
Во-первых, Git ищет базу слияния, которая обычно является последним общим коммитом между двумя коммитами, которые вы объединяете. Это то, с чем он сравнивает каждую из глав (коммитов, которые вы объединяете).
Затем он сравнивает один и тот же файл в каждом коммите. Если файл один и тот же (то есть его идентификатор объекта идентичен), то Git просто принимает это как результат, поскольку обе стороны имеют одно и то же.
Затем он ищет переименования, чтобы найти файлы, которые могли быть перемещены или скопированы. Поскольку мы ищем упрощенный ответ, мы пока проигнорируем их.
Если файлы не полностью идентичны, Git вычисляет различия между этим файлом в базе слияния и каждой головкой по очереди , Затем он создает файл с обоими наборами различий, который представляет собой трехстороннее слияние. Если он может сделать это успешно для каждого файла, то ваше слияние будет успешным. Если файл имеет разные изменения в одной и той же области с обеих сторон, возникает конфликт, который затем необходимо разрешить вручную.
Как я уже говорил выше, Git смотрит только на базу слияния и две головы и их соответствующие различия, а не какие-либо коммиты между ними. Какие бы промежуточные коммиты ни существовали и их изменения не имеют значения; все, что имеет значение, - это состояние на базе слияния и две главы, а не то, как они туда попали.