Ответ 1
Это зависит от того, как вы хотите, чтобы ваша история выглядела.
Действительно простой пример:
* 33ad16c (HEAD, master) Merge branch 'feature-1'
|\
| * e61c6a6 Various bug fixes
| * e15a356 Started feature
|/
* 38b8ada Initial commit
* e61c6a6 (HEAD, master) Bug fix
* e15a356 Started feature
* 38b8ada Initial commit
Эти две истории отражают одни и те же коммиты, но с использованием --no-ff
первая история действительно дает понять, как 2 из коммитов, где на самом деле часть одного и того же набора работ. Это позволяет вам точно знать, какая работа была включена в функцию, которая упрощает откат изменений или просто дает контекст при навигации по истории.
Вторая история не показывает этого различия и делает невозможным просмотр любой группировки работы
Пустое объединение слиянием, которое вы получаете с помощью --no-ff
, также дает полезное место для зависания сообщения фиксации, тогда как простая фиксация дает вам нелегкое место, чтобы сказать: "Это коммит объединяется в работу для функции-x", что снова полезно для истории