Какая команда Git выполняет слияние веток?

«Какая команда Git выполняет слияние веток?» — вопрос из категории Инструменты тестирования, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Основная команда для слияния веток — git merge <branch-name>. Она интегрирует изменения из указанной ветки в текущую.

Базовый рабочий процесс:

# 1. Убедитесь, что вы находитесь в ветке-приёмнике (например, main или develop)
$ git checkout main

# 2. Выполните слияние с веткой, содержащей новые функции (feature-branch)
$ git merge feature-branch

Что происходит при git merge:

  1. Git находит общего предка (common ancestor) двух веток.
  2. Создаётся новый коммит слияния (merge commit), который объединяет изменения из обеих веток. У этого коммита два родителя.
  3. Если изменения в одних и тех же файлах конфликтуют, Git приостанавливает операцию и требует разрешения конфликтов вручную.

Ключевые опции и команды:

  • git merge --no-ff <branch>: Гарантирует создание коммита слияния даже если возможен fast-forward (перемотка). Это полезно для сохранения истории ветвления.
  • git merge --abort: Прерывает слияние в случае конфликта и возвращает репозиторий в состояние до начала операции.

Альтернатива — git rebase:

# Вместо слияния можно перебазировать текущую ветку на основную
$ git checkout feature-branch
$ git rebase main
# Затем выполнить fast-forward merge в main
$ git checkout main
$ git merge feature-branch

Сравнение: merge сохраняет полную историю с коммитами слияния, rebase создаёт линейную историю, «перемещая» ваши коммиты на вершину основной ветки. Выбор зависит от предпочтений команды и workflow.