feature) является прямым потомком текущей ветки (например, main). Git просто "перематывает" указатель текущей ветки на последний коммит ветки, которую сливаете. При этом *не создается* новый коммит слияния.  Это как будто вы просто перешли на коммит feature из main.
Fast-forward merge (Быстрая перемотка слияния) - это тип слияния (merge) веток в Git, который происходит, когда целевая ветка не имеет никаких новых коммитов, которых нет в сливаемой ветке. В этом случае, вместо создания нового коммита слияния, Git просто обновляет указатель целевой ветки на последний коммит сливаемой ветки. Фактически, целевая ветка "перематывается вперед" к состоянию сливаемой ветки.
Когда это происходит:
main и вы создаете ветку feature/new-feature. Вы делаете коммиты в feature/new-feature, но никто не делает коммиты в main.  Когда вы делаете git merge feature/new-feature в main (находясь на ветке main), происходит fast-forward merge.  main просто "перематывается" вперед, чтобы указывать на последний коммит в feature/new-feature.Преимущества fast-forward merge:
Недостатки fast-forward merge:
feature/new-feature была интегрирована в main, может быть потеряна (если вы удалите ветку feature/new-feature).  В истории коммитов будет просто последовательность коммитов.--no-ff (no fast-forward) для принудительного создания коммита слияния.Пример:
Предположим, у нас есть две ветки: main и feature.
    
    *---*---* (main)
         \
          *---*---* (feature)
    
  
  Если мы выполним git checkout main и затем git merge feature, Git выполнит fast-forward merge, и ветка main станет:
    
    *---*---*---*---* (main, feature)
    
  
  Ветка main просто "перемоталась" вперед, чтобы указать на последний коммит в feature.