Вы правы, что перебазировка и слияние могут создать одно и то же конечное дерево.Тем не менее, история, которую они производят, сильно отличается, и контроль версий, конечно же, связан с историей.Вы высказали предпочтение линейной истории;это действительно желательно в локальном масштабе, в то время как слияния помогают записывать более масштабное взаимодействие функций, исправлений и так далее.
Простой ответ на ваш главный вопрос (почему бы просто не перебазировать) заключается в том, что иногда есть подходящее место для запуска ветки, и если это так, вам следует объединить, а не перебазировать.
Например, у вас может быть исправление, которое относится к техническому выпуску, а также к текущему выпуску;Вы хотели бы отделить его от последнего коммита, который является предком обоих выпусков.Вы никогда не сможете перебросить эту ветку вперед вдоль главной ветки или ветки обслуживания, или вы больше не сможете объединить ее с другой.
Точно так же все ветки тем начинаются где-то.В какой-то момент вы хотите сохранить эту историю.Вы упомянули один из явных случаев (другие привлекли ваше внимание), но это может быть гораздо менее очевидным.Возможно, есть какое-то взаимодействие с другими функциями, может быть, эта функция имеет подфункции, и вы пытаетесь сохранить всю эту иерархию.
Так что, разумеется, если ветвь является локальной, и нет оснований сохранять ее основание фиксированным, то, как вы говорите, гораздо проще просто перебазировать ее и сделать это.Но иногда это неправильно.
Ваш последний вопрос на самом деле о чем-то совершенно ином, никак не связанном с конфликтами слияния.Линус сказал, что в контексте слияний, которые не нужно было делать .Это очень важный вопрос философии ветвления и слияния.Джунио Хамано написал превосходное сообщение в блоге об этой самой проблеме.Краткая цитата, подытоживающая данную тему:
Когда вы объединяете ветку темы 'add-frotz' с вашей веткой 'master', вы, очевидно, включаете новую функцию 'frotz', ночто еще более важно, вы заявляете, что желательно иметь эту функцию 'frotz' в ветке 'master'
Линус не хочет видеть, как вы объединяете эту странную ветку под названием 'linus' всевремя, потому что, очевидно, вы не объединяете какую-то конкретную тему, которую желательно иметь в вашей ветке.Вы постоянно объединяете ветку upstream с веткой theme, что совершенно неверно.Вам не нужны все вещи от мастера (или Линус), чтобы развить свою тему.Вы должны закончить свою тему, а затем объединить ее в обратном направлении с мастером!Не желательно иметь все содержимое мастера в вашей ветке тем.(А для одного интегратора это действительно тематическая ветка, поскольку это касается интегратора.)
Итак, у Линуса нет проблем с частыми слияниями;у него проблема с бесцельными и контрпродуктивными слияниями.(И вообще, если вы убедитесь, что ваши слияния сделаны по уважительной причине, они не будут частыми - и они почти никогда не будут слияниями вниз по течению.) Если ваши ребазы сделаны по уважительной причине, и они делают историюлучше, тогда они хорошие, хотя и частые.