git merge -- Объединение работы
Команда git merge интегрирует изменения из одной ветки в другую. Именно так вы возвращаете работу над функциональностью обратно в main.
Как работает слияние
Когда вы выполняете git merge feature, находясь на ветке main:
- Git находит общего предка обеих веток
- Он объединяет изменения с обеих сторон
- Он создаёт новый коммит слияния с двумя родителями
main: A --- B --- C ------- M
\ /
feature: D --- E ----
Коммит слияния M имеет двух родителей: C (из main) и E (из feature).
Fast-Forward слияние
Если main не продвинулась с момента создания ветки, Git может просто передвинуть указатель вперёд -- коммит слияния не нужен:
До: main → A --- B feature → C --- D
После: main → A --- B --- C --- D ← feature
Попробуйте!
Создайте ветку с функциональностью и выполните слияние:
- Создайте коммит в main:
echo "base" > base.txt, затемgit add base.txt, затемgit commit -m "Add base" - Создайте и переключитесь на feature:
git checkout -b feature - Добавьте коммит с функциональностью:
echo "feature" > feature.txt, затемgit add feature.txt, затемgit commit -m "Add feature" - Вернитесь на main:
git checkout main - Выполните слияние:
git merge feature
Наблюдайте за графом -- вы должны увидеть коммит слияния, соединяющий обе линии истории.
После слияния
После слияния ветка с функциональностью больше не нужна. Наведите порядок:
git branch -d feature
Коммиты из ветки сохраняются в истории main через коммит слияния.