Этот ответ был пересмотрен, так как мое понимание, диаграммы и выводы были неверными.
git pull
вызывает коммиты слияния, потому что git сливается. Это можно изменить, установив в ваших ветках использование rebase вместо слияния. Использование rebase вместо слияния при извлечении обеспечивает более линейную историю для общего хранилища. С другой стороны, коммиты слияния показывают параллельные усилия по разработке в ветви.
Например, два человека работают в одной ветке. Ветка начинается как:
...->C1
Первый человек заканчивает свою работу и подталкивает к ветке:
...->C1->C2
Второй человек заканчивает свою работу и хочет нажать, но не может, потому что ему нужно обновить. Локальный репозиторий для второго человека выглядит так:
...->C1->C3
Если задание объединено, хранилище вторых лиц будет выглядеть так.
...->C1->C3->M1
\ /
->C2->
Где M1 - коммит слияния. Эта новая ветка истории будет перенесена в репо. Если вместо этого, тяга настроена на перебазирование, локальный репо будет выглядеть так:
...->C1->C2->C3
Коммит слияния отсутствует. История стала более линейной.
Оба варианта отражают историю отрасли. Git позволяет вам выбрать, какую историю вы предпочитаете.
Действительно, есть места, где rebase может вызвать проблемы с удаленными ветвями. Это не один из тех случаев. Мы предпочитаем использовать rebase, поскольку он упрощает и без того сложную историю веток, а также показывает версию истории относительно общего хранилища.
Вы можете установить значение branch.autosetuprebase = всегда, чтобы git автоматически устанавливал ваши удаленные ветви как rebase вместо master.
git config --global branch.autosetuprebase always
Этот параметр заставляет git автоматически создавать параметры конфигурации для каждой удаленной ветви:
branch.<branchname>.rebase=true
Вы можете установить это для своих удаленных филиалов, которые уже настроены.
git config branch.<branchname>.rebase true
Я хотел бы поблагодарить @LaurensHolst за допрос и продолжение моих предыдущих заявлений. Я, конечно, узнал больше о том, как git работает с коммитами pull и merge.
Для получения дополнительной информации о коммитах слияния вы можете прочитать Вклад в проект в ProGit-Book . Private Small Team показывает коммиты слияния.