Какой способ мёрджить feature-ветку с главной лучше?

Обычно у нас есть созданная под конкретный тикет feature-ветка, которая живёт примерно от одного дня до недели, ну и ветка main или master (в зависимости от вашей увлечённости SJW-повесткой).

Итак, как мёрджить фичу в main лучше? В зависимости от общего подхода к работе, используем один из этих способов:

  • если принято работать на короткоживущих feature-ветках, то мёрджить ветки надо через Squash Merge (точнее squash, а затем уже merge). Тогда у нас будет чистая линейная история без всяких мусорных комитов а-ля «WIP», «fix», «refactor». Где-то через несколько дней после этого, если никаких проблем не возникло, feature-ветку можно удалять, как локально (что бы не разводить бардак), так и на сервере.
  • если принято работать на долгоживущих feature-ветках-долгостроях (особенно если над веткой ещё и больше одного разработчика пыхтели) то лучше использовать Merge Commit (или Rebase Merge). Тогда после мёрджа, у вас сохранится вся история комитов на этой ветке, что в данном случае полезно, на случай возникновения проблем. А что бы не разводить грязь, перед пушем, локально, нужно делать squash мусорных комитов чтобы в PR были только важные вещи.