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

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

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

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

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

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

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

Fast-forward злиття

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

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

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

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

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

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

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

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

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

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

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

question mark

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

Select the correct answer

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

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

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

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

Запитати АІ

expand

Запитати АІ

ChatGPT

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

Awesome!

Completion rate improved to 5

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

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

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

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

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

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

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

Fast-forward злиття

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

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

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

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

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

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

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

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

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

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

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

question mark

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

Select the correct answer

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

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

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

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