Как слить две ветки через консоль в Git?

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

Ответ

Чтобы слить изменения из одной ветки в другую через командную строку Git, я выполняю следующие шаги:

  1. Убедиться в актуальности целевой ветки. Переключаюсь на ветку, В КОТОРУЮ нужно внести изменения (например, main или develop), и подтягиваю последние изменения с удаленного репозитория.

    git checkout main
    git pull origin main
  2. Выполнить слияние. Запускаю команду merge, указав ветку-источник изменений.

    git merge feature/new-authentication
    • Если слияние проходит без конфликтов (fast-forward или автоматическое разрешение), Git создаст новый коммит слияния (или переместит указатель ветки).
    • Чтобы всегда создавался коммит слияния, даже при возможности fast-forward, использую флаг --no-ff:
      git merge --no-ff feature/new-authentication
  3. Разрешение конфликтов (если возникли). Если Git сообщает о конфликтах:

    • Открываю файлы, помеченные как конфликтные (в них будут блоки <<<<<<<, =======, >>>>>>>).
    • Вручную редактирую их, оставляя нужный код, и удаляю маркеры конфликта.
    • Добавляю исправленные файлы в индекс и завершаю слияние коммитом.
      git add <конфликтный_файл>
      git commit -m "Merge branch 'feature/new-authentication' into main"
    • Если нужно прервать слияние и вернуть все как было, использую:
      git merge --abort
  4. Отправка результата на удаленный репозиторий.

    git push origin main