На моем рабочем месте «центральным» хранилищем является сервер SVN. Я использую git через git-svn.
SVN (очевидно) не выполняет быстрое слияние. Поэтому, чтобы иметь возможность реплицировать мою локальную историю на сервер, я делаю все слияния, которые станут видимыми извне.
Причина, по которой вы бы предпочли этот шаблон в общем случае (уточняется: «зачем вам нужен явный коммит слияния для основной комбинации двух ветвей, такой как воссоединение давней ветви побочных объектов, даже когда не конфликтует? ") это заставляет хранилище лучше отражать реальную последовательность выполненных операций - то есть, абстракция для истории лучше отражает реальность этого история.
Когда вы выполняете перемотку вперед, информация о том, когда произошла интеграция, теряется - в истории нет смысла говорить «вот когда X стал Y» со связанным сообщением.
Это та же самая причина, по которой некоторые люди используют слияния, предпочитая перебазирование даже для своих локальных ветвей - перебазирование - это форма переписывания истории, белая ложь на бумаге.
На ваш другой вопрос - «почему в коммите слияния должны быть только небольшие изменения», ответ заключается в том, что коммит слияния может иметь большое различие в отношении любого или всех его родителей. Таким образом, если вы добавите туда значительную другую работу, очень трудно распутать, была ли проблема интеграцией или одним из добавленных вами новых изменений. Если вы поместите коммит либо на одного из родителей, либо после слияния, разделение на части будет упрощено, возможен перенос изменений с помощью вишневого пика, вы можете отменить слияние, не теряя функций, и т. Д.