Перебазування гілок (git rebase)
Використання git rebase для перенесення комітів однієї гілки поверх іншої та створення лінійної історії комітів.
Перебазування гілок у Git
У Git існує два основних способи об'єднання змін між гілками: git merge та git rebase. Обидві команди дозволяють перенести зміни з однієї гілки до іншої, але роблять це по-різному.
Команда git rebase переносить коміти поточної гілки поверх останнього коміту іншої гілки. Завдяки цьому історія комітів стає більш послідовною та легшою для читання.
Створення робочої гілки
git branch test
git switch testПісля переходу до нової гілки створіть або змініть файл, додайте його до області підготовки та виконайте коміт.
git add file.txt
git commit -m "Add file.txt"Перебазування гілки
Перебуваючи у гілці test, виконайте перебазування відносно основної гілки:
git rebase mainЯкщо у вашому репозиторії основна гілка має назву master, використовуйте:
git rebase masterДо перебазування
main
A ── B
\
C ── D
test
git switch test
git rebase main
Після перебазування
main
A ── B
\
C' ── D'
testПід час перебазування Git створює нові коміти з тими самими змінами, але вже після останнього коміту гілки main. Завдяки цьому історія стає лінійною.
Злиття після перебазування
Після успішного перебазування можна перейти до основної гілки та об'єднати зміни.
git switch main
git merge testУ більшості випадків після перебазування Git виконає швидке злиття (Fast-forward), тому додатковий merge-коміт створений не буде.
Порівняння merge та rebase
| git merge | git rebase |
|---|---|
| Створює коміт злиття | Переписує історію комітів |
| Історія може містити розгалуження | Історія стає лінійною |
| Безпечний для спільної роботи | Не рекомендується для вже опублікованих комітів |
Перегляд історії
git log --oneline --graph* d4e8f12 Add file.txt
* a1b2c3d Previous commit
* 7e5c1aa Initial commitНе використовуйте git rebase для комітів, які вже були відправлені до спільного віддаленого репозиторію. Перебазування змінює історію комітів і може створити проблеми іншим учасникам команди.
- Створіть дві гілки: test1 і test2.
- У кожній гілці створіть по три коміти зі змінами у різних файлах.
- Перебазуйте одну з гілок відносно основної за допомогою git rebase.
- Перейдіть до основної гілки та виконайте git merge.
- Перегляньте історію командою git log --oneline --graph.
💡 Показати підказку
Перед виконанням git rebase переконайтеся, що ви перебуваєте саме у тій гілці, яку потрібно перебазувати.
✅ Показати відповідь
Відповідь: Створити гілку: git branch test git switch test Створити коміт: git add file.txt git commit -m "Add file.txt" Перебазувати: git rebase main або git rebase master Повернутися до основної гілки: git switch main git merge test Переглянути історію: git log --oneline --graph