Git предоставляет два мощных инструмента для интеграции изменений из одной ветки (часто feature-ветки) в другую (обычно main):
Merge и Rebase
Оба инструмента решают одну задачу — объединение кода, но делают это по-разному.
✔️ Git Merge
Merge создаёт новый коммит, который фиксирует объединение двух веток.
В истории это видно как слияние двух независимых линий разработки в одной точке.
Шаги:
1. Переключись на целевую ветку (обычно main)
2. Выполни
git merge <feature> — укажи имя исходной веткиРезультаты:
🔸Создаётся новый merge-коммит в целевой ветке с ссылками на родительские коммиты
🔸История целевой ветки становится разветвлённой, отражая все слияния
🔸Это более безопасный вариант для командной работы — история изменений сохраняется
✔️ Git Rebase
Rebase переписывает историю ветки (обычно feature-ветки), как будто коммиты были сделаны поверх другой ветки (например, main).
Получается более линейная история без merge-коммитов.
Шаги:
1. Переключись на ветку, которую хочешь ребейзнуть (например, feature)
2. Выполни
git rebase <main>Результаты:
🔸Коммиты из feature будут повторно применены на вершину main, создаются новые коммиты с теми же изменениями
🔸Целевая ветка (main) при этом не изменяется
🔸История feature-ветки становится линейной, но её история будет переписана
Примечания:
После успешного rebase, финальное merge в main часто выполняется как fast-forward, т.к. история выглядит непрерывной
Rebase изменяет ветку, на которой ты находишься, а не целевую ветку
Итог:
merge сохраняет историю как есть → хорошо для командной работыrebase делает историю аккуратной → хорошо для чистоты, но требует осторожности👉 Java Portal