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

Зміст курсу

Основи GitHub

Основи GitHub

1. Вступ до GitHub
2. Базова Взаємодія з Віддаленими Репозиторіями
3. Більш Складні Робочі Процеси

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

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

course content

Зміст курсу

Основи GitHub

Основи GitHub

1. Вступ до GitHub
2. Базова Взаємодія з Віддаленими Репозиторіями
3. Більш Складні Робочі Процеси

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