Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Чи можна змінювати історію комітів?». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)Так, історію комітів у Git можна змінювати за допомогою `git commit --amend`, `git rebase` та `git reset`. **Ключове:** безпечно робити це тільки для локальних або ще не опублікованих комітів, а в публічних гілках історію не переписують і використовують `git revert`.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)Зображення## Чому взагалі можна змінювати історію Git - **розподілена система**. Історія комітів - це не щось «святе», а просто ланцюжок об'єктів, і Git дозволяє: - переписувати коміти - видаляти їх - об'єднувати - змінювати повідомлення і автора **Поки коміти не потрапили до спільного репозиторію**, ти вільний робити з ними що завгодно. --- ## Як можна змінювати історію (основні способи) ### 1. `git commit --amend` Використовується, щоб змінити **останній коміт**: - виправити повідомлення - додати забутий файл ```bash git commit --amend ``` Це **перезаписує останній коміт**, створюючи новий. --- ### 2. `git rebase` (особливо interactive) Найпотужніший інструмент для зміни історії. Дозволяє: - змінювати повідомлення комітів - об'єднувати коміти (squash) - змінювати порядок - видаляти коміти ```bash git rebase -i HEAD~3 ``` Дуже люблять на співбесідах, як ознаку впевненого знання Git. --- ### 3. `git reset` Дозволяє **зсунути вказівник гілки назад**: - `--soft` - `--mixed` - `--hard` Наприклад: ```bash git reset --hard HEAD~1 ``` Може **видалити коміти**, якщо на них більше ніхто не посилається. --- ### 4. `git revert` (важлива відмінність!) `git revert` **не змінює історію**, а додає **новий коміт**, який скасовує зміни старого. Це безпечний спосіб для публічних гілок. --- ## Головне правило (ключ для співбесіди) **Не можна переписувати історію, яка вже використовується іншими**. Формулювання, яке дуже подобається інтерв'юерам: > Історію можна безпечно змінювати тільки в локальних або ще не опублікованих гілках. --- ## Чому це небезпечно у спільному репозиторії Якщо ти змінив історію і зробив `push --force`: - у колег ламається історія - з'являються конфлікти - можна втратити чужу роботу --- ## Коротка відповідь для співбесіди > Так, історію комітів у Git можна змінювати - за допомогою `commit --amend`, `rebase`, `reset`. Але робити це безпечно тільки для локальних або нерозшарених комітів. У публічних гілках історію не переписують, а використовують `git revert`. --- ## Типова помилка кандидатів «У Git не можна змінювати історію» «Можна завжди, якщо акуратно» **Можна, але з чітким розумінням контексту і наслідків**Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.