Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Що відбувається з історією комітів при rebase?». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)При `git rebase` історія комітів переписується: старі коміти замінюються новими комітами з іншими хешами, навіть якщо зміни в коді такі самі. **Ключове:** через це rebase не можна робити для публічних гілок, які вже використовуються іншими розробниками.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)ЗображенняПри `git rebase` історія комітів **переписується** - старі коміти **замінюються новими**, навіть якщо зміни в коді такі самі. Це **найголовніше**, що потрібно розуміти про rebase. --- ## Що означає «переписується історія» Коли ти робиш `rebase`, Git: 1. Бере коміти твоєї гілки 2. Тимчасово «прибирає» їх 3. Переміщує гілку на інший базовий коміт 4. **Створює нові коміти**, застосовуючи зміни заново Старі коміти **перестають бути частиною історії гілки**. --- ## Візуально До `rebase`: ``` A---B---C (main) \ D---E (feature) ``` Після `rebase`: ``` A---B---C---D'---E' (feature) ``` - `D'` і `E'` - **нові коміти** - хеші змінилися - оригінальні `D` і `E` більше не використовуються --- ## Що саме змінюється | Було | Стало | |---|---| | Коміт D | Коміт D' | | Коміт E | Коміт E' | | Старі хеші | Нові хеші | | Розгалужена історія | Лінійна історія | Навіть якщо код ідентичний, **Git вважає їх різними комітами**. --- ## Чому це небезпечно для спільних гілок Якщо гілка вже: - запушена - використовується іншими розробниками Після `rebase`: - у тебе **інша історія** - у колег стара - Git не може автоматично їх сумістити Результат - конфлікти і «зламана» історія. --- ## Як це формулюють на співбесіді > **При** `git rebase` **історія переписується: коміти пересоздаються з новими хешами, через що змінюється послідовність історії.** І часто додають: > **Тому rebase не можна робити для публічних гілок.** --- ## Плюси такого підходу - акуратна, лінійна історія - легко читати `git log` - зручно перед merge --- ## Коротка відповідь (якщо зовсім коротко) > `git rebase` **переписує історію комітів: старі коміти замінюються новими з іншими хешами.**Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.