Виконання Операції Rebase
Свайпніть щоб показати меню
Перенесення змін на гілку main
Перш ніж виконати операцію rebase, необхідно переключитися на гілку main та отримати останні зміни:
git checkout main
git pull
Тепер переглянемо дерево комітів:
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
Як і очікувалося, історія комітів тепер лінійна, а останній коміт знаходиться у гілці 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 для змін, які вже були відправлені у віддалені репозиторії, щоб запобігти цим проблемам.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Виконання Операції Rebase
Перенесення змін на гілку main
Перш ніж виконати операцію rebase, необхідно переключитися на гілку main та отримати останні зміни:
git checkout main
git pull
Тепер переглянемо дерево комітів:
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
Як і очікувалося, історія комітів тепер лінійна, а останній коміт знаходиться у гілці 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 для змін, які вже були відправлені у віддалені репозиторії, щоб запобігти цим проблемам.
Дякуємо за ваш відгук!