Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Виконання Операції Rebase | Більш Складні Робочі Процеси
Основи GitHub

Виконання Операції Rebase

Свайпніть щоб показати меню

Перенесення змін на гілку main

Перш ніж виконати операцію rebase, необхідно переключитися на гілку main та отримати останні зміни:

git checkout main
git pull
Перехід на гілку main та отримання змін

Тепер переглянемо дерево комітів:

git log --graph --oneline --all
Дерево комітів перед ребейзом

На даний момент як гілка main, так і гілка feature/payment мають коміти після останнього спільного предка. Це означає, що fast-forward злиття виконати неможливо.

Якщо об'єднати ці гілки, відбудеться трьохстороннє злиття. Однак для збереження лінійної історії виконується ребейз гілки feature/payment на гілку main. Для цього потрібно перейти на гілку feature/payment і виконати команду git rebase:

git checkout feature/payment
git rebase main
Ребейз змін

Fast-forward злиття

Оскільки rebase виконано успішно, розглянемо наше дерево комітів ще раз:

git log --graph --oneline
Дерево комітів після rebase

Як і очікувалося, історія комітів тепер лінійна, а останній коміт знаходиться у гілці feature/payment. Тепер можна виконати просте fast-forward злиття у гілку main:

git checkout main
git merge feature/payment
Злиття гілок

Перевірка, що обидві гілки вказують на один і той самий коміт, переглянувши останній коміт:

git log -n 1
Останній коміт

Видалення гілки Feature

Гілка main тепер містить останній коміт з реалізованою платіжною системою, тому можна безпечно видалити як локальну, так і віддалену гілку feature/payment. Наступна команда видаляє віддалену гілку:

git push --delete origin feature/payment

Тепер можна видалити локальну гілку:

git branch -d feature/payment
Видалення гілок

Нарешті, всі внесені зміни можна відправити назад до віддаленого репозиторію:

git push
Відправлення видалення

Щоб перевірити, що гілку feature було видалено як локально, так і віддалено, можна виконати наступну команду, яка виведе всі (-a означає всі) локальні та віддалені гілки:

git branch -a
Перелік усіх гілок

Як видно, гілку feature/payment було успішно видалено, і тепер залишилося лише дві гілки: main та john/test разом із їхніми віддаленими копіями.

Загалом, rebase добре підходить для локальних змін, які ще не були опубліковані, але може спричинити значні проблеми для змін, які вже були опубліковані у віддаленому репозиторії та, можливо, завантажені іншими учасниками. Виконання rebase комітів, які використовують інші, може призвести до плутанини та конфліктів через переписування історії комітів.

Загальне правило: уникайте виконання rebase для змін, які вже були відправлені у віддалені репозиторії, щоб запобігти цим проблемам.

question mark

Чому після виконання rebase гілки feature/payment на main команда git merge feature/payment виконує fast-forward злиття?

Виберіть правильну відповідь

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 3. Розділ 5

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Секція 3. Розділ 5
some-alt