История эта началась пару месяцев назад. Во всех рабочих проектах я отщепил от основной ветки GITа бранч и начал туда пихать изменения. Потом на все проекты группы был объявлен code freeze и я вручную коммит-за-коммитом перегнал все изменения основной ветки от точки ветвления в мой бранч. Это была предыстория, а собственно чудо произошло во время merge из бранча в основную ветку. Дело в том, что на страже изменений у нас поставлен Gerrit - эдакий прокси GIT-сервера, с возможностями автоматической проверки и официального утверждения изменений после code review. Так вот, этот самый Gerrit в своём гуе честно показал merge как кучу измененных файлов, но с одной маленькой ремаркой - надо бы разрешить кофликт. Ну я ничтоже сумняшеся жму "Rebase" и ... всесь мой merge-commit превращается в тыкву одинокий Commit Message. Всё, больше ничего от merge-commit не осталось. Как мне объяснили знающие люди, это говорит о качестве перегонки ручного добавления изменений из основной ветки в бранч. Но позвольте, как же он служил в очистке функция ревью в Gerrit? А вот так: качественный merge в ревью не нуждается! Более того, когда я в панике отменил merge commit, это не повлияло на статус основной ветки - она уже содержала влившийся из бранча код! Это как католическая женитьба - с момента регистрации брака никаких разводов не признаётся.. Или как в шахматах: взялся - ходи (объявленный бранч отменить нельзя), пошел - всё, играем дальше (слился с основной веткой - вы теперь неотвратимо вместе).
PS: в своё время в Интеле я сбацал целую систему для объединения разветвившихся проектов - с поиском изменений в обеих ветках, сохранением их в виде чеклиста, гуёвым представлением чеклиста и поддержкой резолюций с отчётами. Но там всё было гораздо примитивнее, ибо академиев мы не кончали, что поделать. Например, чеклисты хранились не в source control, а в ... скрытых текстовых файлах, распиханных по директориям. И работала сия система на RCS! Да, было время...