Яка різниця між git merge та git rebase?
Два способи інтеграції змін з однієї гілки в іншу.
git merge
Створює новий "merge commit", який зв'язує історії разом.
```bash git checkout main git merge feature
```
Результат: ``` main: A---B---C-------M \ / feature: D---E ```
Переваги:
- Зберігає повну історію
- Безпечний для спільних гілок
- Показує коли фічі були змержені
- Не руйнівний
Недоліки:
- Створює додаткові merge коміти
- Історія може стати захаращеною
- "Спагетті" історія у великих командах
git rebase
Переносить коміти на нову базу, створюючи лінійну історію.
```bash git checkout feature git rebase main
```
Результат:
```
До:
main: A---B---C
feature: D---E
Після:
main: A---B---C
feature: D'---E' (нові коміти!)
```
Переваги:
- Чиста, лінійна історія
- Легше слідкувати
- Немає merge комітів
- Краще для code review
Недоліки:
- Переписує історію комітів (небезпечно!)
- Не видно коли фіча була змержена
- Складні конфлікти
- Ніколи не використовуйте на публічних гілках!
Коли що використовувати?
Використовуйте Merge коли:
- Працюєте на публічних/спільних гілках
- Хочете зберегти повну історію
- Кілька людей працюють на гілці
- Безпечний вибір за замовчуванням
Використовуйте Rebase коли:
- Очищаєте локальні коміти перед push
- Feature гілка ще не запушена
- Хочете лінійну історію
- Сольна розробка
Звичайний Workflow
```bash
git checkout feature git rebase main # Очистити feature коміти
git checkout main git merge feature --no-ff # Зберегти контекст feature ```
Золоті правила
- Ніколи не робіть rebase публічної історії
- Rebase локально, merge публічно
- Використовуйте rebase для очищення перед шерингом
- Використовуйте merge для інтеграції роботи
Interactive Rebase
Очистити коміти перед мержем:
```bash git rebase -i HEAD~3
```
Питання на співбесіді
П: Чи можна відмінити merge?
В: Так, використовуйте `git reset --hard HEAD~1` (перед push) або `git revert -m 1
П: Що станеться якщо зробити rebase публічної гілки? В: Інші отримають конфлікти, дублікати комітів та хаос в історії. Команда повинна `git reset --hard` щоб виправити.
Коротка відповідь
Для співбесідиКоротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.