#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 при объединении через веб-интерфейс.