Як скасувати коміт у Git?
Скасувати коміт можна трьома способами залежно від ситуації.
Якщо коміт ще не надіслано у спільний репозиторій (push не робився), використовуйте git reset. Команда git reset --soft HEAD~1 скасує останній коміт, але збереже зміни в індексі (staging area) — ви зможете змінити повідомлення і закомітити знову. Команда git reset --mixed HEAD~1 (це поведінка за замовчуванням) скасує коміт і прибере зміни з індексу, але залишить їх у робочій директорії. Команда git reset --hard HEAD~1 повністю видалить і коміт, і зміни — використовуйте її лише якщо точно впевнені, що код не потрібен.
Якщо коміт уже надіслано у спільний репозиторій, використовуйте git revert. Команда git revert HEAD створює новий коміт, який скасовує зміни попереднього. Це безпечно для командної роботи, тому що історія не переписується, а додається новий коміт скасування. Можна скасувати кілька комітів: git revert HEAD~3..HEAD.
Якщо потрібно змінити лише повідомлення останнього коміту або додати забутий файл, використовуйте git commit --amend. Ця команда замінює останній коміт новим з тим самим вмістом, але іншим повідомленням або додатковими файлами. Не використовуйте --amend для комітів, які вже надіслано у спільний репозиторій — це перепише історію і створить проблеми в інших розробників.
Правило: reset — для локальних комітів, revert — для спільних, amend — для виправлення останнього коміту до push.