Команды Git

git merge

git merge: слить (англ. mergeслияние) изменения из другой ветки в текущую ветку.

Команда git merge используется для интеграции изменений из одной ветки в другую. Цель слияния — объединить работу, выполненную в разных ветках, в одну линию разработки, обычно в основную ветку.

mainf2f3f1GIT MERGE
1 / 33

Слияние — частая операция в работе с Git, особенно когда новые возможности или исправления ошибок делаются в отдельных ветках. Как только работа в ветке закончена и проверена, её можно влить обратно в основную ветку (или любую другую целевую), чтобы применить эти изменения.

В Git есть два основных типа слияний:

  1. Слияние fast-forward: Это слияние происходит, если целевая ветка не разошлась с исходной. В этом случае Git просто перемещает указатель целевой ветки на последний коммит исходной ветки. Новый коммит слияния не создаётся, потому что исходная ветка уже опережает целевую.

  2. Коммит слияния (merge commit): Когда целевая ветка разошлась с исходной (то есть в обеих ветках появились новые коммиты), Git создаёт новый коммит, объединяющий изменения из обеих веток. Это называется коммитом слияния (merge commit), и у него два родительских коммита: один из целевой ветки и один из исходной.

Слияния fast-forward — лучший вариант, чтобы история коммитов оставалась чистой и линейной. Интересно, что часто этого добиваются не через git merge, а с помощью команды git rebase. Вместо того чтобы создавать «салат из коммитов», где коммиты из твоей ветки перемешаны с коммитами из другой, rebase берёт все коммиты из другой ветки и применяет все твои коммиты поверх них, создавая линейную историю.

Иногда слияние может привести к конфликту слияния (merge conflict), если одни и те же строки кода были изменены в обеих ветках. В таких случаях Git отметит конфликтующие строки в затронутых файлах, и тебе придётся разрешить конфликты вручную — отредактировать файлы и выбрать, какие изменения оставить.

Помни: перед слиянием часто бывает полезно убедиться, что текущая ветка синхронизирована с последними изменениями из удалённого репозитория. Для этого можно выполнить git fetch, а затем git merge или git rebase с удалённой веткой. Это помогает избежать конфликтов и сохранить историю более чистой.



Примеры

Слить ветку new-feature в текущую:

git merge new-feature

Слить ветку login-form-bugfix в текущую и создать коммит слияния, даже если возможно слияние fast-forward:

git merge --no-ff login-form-bugfix

Отменить слияние при возникновении конфликтов:

git merge --abort

После разрешения конфликтов завершить слияние:

git add .
git merge --continue