git rebase
Перенести коміти гілки на нову основу або переписати останні коміти
Що робить
git rebase main бере коміти поточної гілки й заново застосовує їх поверх свіжого main — ніби робота почалася щойно. Історія виходить прямою, без комітів злиття. Якщо коміт конфліктує з новою основою, git зупиниться: виправте файли, додайте їх через git add і продовжте git rebase --continue або скасуйте все через git rebase --abort.
З прапорцем -i rebase стає інтерактивним: git відкриє редактор зі списком комітів, де кожен можна залишити (pick), перейменувати (reword), склеїти з попереднім (squash) або видалити (drop). Так наводять лад в історії перед pull request.
Обережно. rebase створює нові коміти замість старих. Не перебазовуйте коміти, які вже є в спільній гілці: у колег історія розійдеться з вашою. Свою гілку після rebase доведеться надіслати через git push --force-with-lease.
Синтаксис
git rebase <гілка>
git rebase -i <коміт>
git rebase --continue
git rebase --abortПриклади
Перенести коміти поточної гілки поверх свіжого main
git rebase mainrebase— переписати гілку поверх іншоїmain— нова основа
Інтерактивно відредагувати три останні коміти
git rebase -i HEAD~3те саме:
git rebase --interactive HEAD~3rebase— переписати історію-i— інтерактивно: squash, reword, dropHEAD~3— три останні коміти