Skip to main content
Практика завдань

Яка різниця між 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 ```

Золоті правила

  1. Ніколи не робіть rebase публічної історії
  2. Rebase локально, merge публічно
  3. Використовуйте rebase для очищення перед шерингом
  4. Використовуйте merge для інтеграції роботи

Interactive Rebase

Очистити коміти перед мержем:

```bash git rebase -i HEAD~3

```

Питання на співбесіді

П: Чи можна відмінити merge? В: Так, використовуйте `git reset --hard HEAD~1` (перед push) або `git revert -m 1 ` (після push).

П: Що станеться якщо зробити rebase публічної гілки? В: Інші отримають конфлікти, дублікати комітів та хаос в історії. Команда повинна `git reset --hard` щоб виправити.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.

Дочитали статтю?
Практика завдань