Menu
Coddy logo textTech

Трёхстороннее слияние

Часть раздела Контроль версий путешествия по Terminal на Coddy — урок 36 из 58.

Если обе ветки развивались независимо, Git не может просто выполнить fast-forward. Вместо этого он выполняет трехстороннее слияние: он берет общего предка и верхушки двух веток и создает новый коммит, который их объединяет.

Этот новый коммит является коммитом слияния (merge commit). У него два родителя, по одному из каждой ветки:

git switch main
git merge feature -m "Merge feature"

Флаг -m позволяет указать сообщение коммита слияния напрямую, поэтому Git не открывает редактор.

В большинстве случаев Git может автоматически объединять изменения из обеих веток, если они затрагивают разные части файлов. Конфликты возникают только тогда, когда в обеих ветках изменены одни и те же строки, и это тема следующего урока.

challenge icon

Задание

Средне

Вы начинаете в новой папке с top.txt (содержимое: a) и bottom.txt (содержимое: b).

Инициализируйте репозиторий, сделайте первый коммит, затем:

  1. Создайте ветку feature и добавьте строку added в top.txt; сделайте коммит.
  2. Переключитесь на main и добавьте строку added в bottom.txt; сделайте коммит.
  3. Слейте feature в main с сообщением Merge feature.

Выведите количество коммитов, доступных из HEAD, используя git rev-list --count HEAD. Ожидаемое количество — 4 (initial + feature + main + merge).

Шпаргалка

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

git switch main
git merge feature -m "Merge feature"

Флаг -m устанавливает сообщение коммита слияния без открытия редактора. Git выполняет слияние автоматически, если в обеих ветках были изменены разные строки.

Попробуйте сами

Терминал
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Контроль версий