Урок 44 із 65
68%
← Назад

Перебазування комітів за допомогою git rebase --onto

Перенесення частини комітів однієї гілки поверх іншої за допомогою команди git rebase --onto.

Перебазування частини комітів

Команда git rebase переносить усі коміти поточної гілки поверх іншої гілки. Проте іноді потрібно перенести лише частину комітів. Для цього використовується команда git rebase --onto.

Git знайде коміти, які знаходяться після вказаної базової гілки, і перенесе тільки їх поверх іншої гілки.

Синтаксис команди

git rebase --onto <нова-гілка> <базова-гілка> <поточна-гілка>

Перший параметр вказує, куди потрібно перенести коміти. Другий — від якої точки починати перенесення. Третій — гілка, коміти якої потрібно перебазувати.

Приклад

Припустимо, є три гілки: main, server та client. Потрібно перенести лише коміти гілки client, яких немає у server, безпосередньо поверх main.

git rebase --onto main server client
До перебазування

A──B──C────────────── main
     │
     ├──D──E───────── server
     │
     └──F──G───────── client


git rebase --onto main server client


Після перебазування

A──B──C──F'──G'────── main

     ├──D──E───────── server

                 └──F'──G'── client

Git створить нові коміти F' та G' поверх останнього коміту гілки main. Коміти D та E залишаться лише у гілці server.

Злиття після перебазування

Після успішного перебазування можна перейти до основної гілки та виконати швидке злиття.

git switch main
git merge client

Якщо після перебазування основна гілка не змінилася, Git виконає швидке злиття (Fast-forward) без створення merge-коміту.

Коли використовувати git rebase --onto

СитуаціяПідходить
Перенести лише частину комітів✅ Так
Перебазувати всю гілку❌ Використовуйте git rebase
Змінити основу окремої гілки✅ Так
Перенести всі зміни між двома гілками❌ Краще git merge або git rebase
❗ Важливо:

Не використовуйте git rebase або git rebase --onto для комітів, які вже були опубліковані у спільному віддаленому репозиторії. Перебазування створює нові коміти та змінює історію проєкту, що може ускладнити роботу інших учасників команди.

📌 Завдання:
  1. Створіть гілки server і client.
  2. Додайте кілька комітів у кожній гілці.
  3. Виконайте git rebase --onto для перенесення комітів client поверх main.
  4. Перейдіть до основної гілки та виконайте git merge.
  5. Перегляньте історію командою git log --oneline --graph.
💡 Показати підказку

Перед використанням git rebase --onto перегляньте історію командою git log --graph, щоб зрозуміти, які саме коміти будуть перенесені.

✅ Показати відповідь
Відповідь:

Перебазувати частину комітів:

git rebase --onto main server client


Перейти до основної гілки:

git switch main


Виконати злиття:

git merge client


Переглянути історію:

git log --oneline --graph