Объединение ветвей Git с сохранением индивидуального расположения ветвей

#git #command-line #git-branch

#git #командная строка #git-branch

Вопрос:

Я пытаюсь следовать ныне известной модели разработки git flow, но у меня возникают некоторые трудности с пониманием того, как выполнять некоторые операции из командной строки. Если я запускаю git merge develop из главной ветви, история ветви разработки перемещается в главную ветвь. ПРИМЕР:

Вот как выглядит мой репозиторий перед слиянием:

               F--G--H--I Develop
             /
A--B--C--D--E Master
  

Вот как это выглядит после слияния:

 A--B--C--D--E--F--G--H--I Master
  

Вот как я хочу, чтобы это выглядело после слияния:

               F--G--H--I Develop
             /          
A--B--C--D--E------------J Master
  

Я могу получить желаемый результат, только если использую функцию «запрос на слияние» моего веб-интерфейса git (gitlab). Я знаю, что должен быть способ сделать это с помощью vanilla git, чего мне не хватает?

Ответ №1:

У вас отсутствует --no-ff флаг на git merge . ff означает ускоренную перемотку вперед; поскольку Master не продвинулся с момента разработки, git можно выполнить слияние с гарантией того, что не будет конфликтов слияния для разрешения. git этот тип слияния называется слиянием с ускоренной перемоткой вперед. --no-ff Флаг заставляет git выполнять слияние без быстрой перемотки вперед, что означает, что он выполнит явную фиксацию слияния ( J на вашей схеме).

В сумме:

 git merge --no-ff develop
  

это то, что делает gitlab при объединении через веб-интерфейс.