Що робити, якщо зробив push у неправильну гілку?
Відповідь
Push у неправильну гілку — часта помилка. Дії залежать від того, помітили чи ви одразу і чи є вже pull від інших розробників.
Ситуація
•push у свою feature-гілку, але коміти мають бути в іншій. Створіть правильну гілку від поточного стану: git branch correct-branch. Перемкніться на неї: git checkout correct-branch. Тепер коміти в правильній гілці. Видаліть неправильні коміти з вихідної гілки: git checkout wrong-branch, git reset --hard origin/wrong-branch (повертає до стану remote до вашого push), git push --force-with-lease. Потім push правильну гілку: git checkout correct-branch, git push -u origin correct-branch.
Ситуація
•push у спільну гілку (main, develop). Якщо коміти невеликі і ніхто ще не зробив pull, можна скасувати через git revert. Перемкніться на main: git checkout main. Створіть revert-коміти: git revert HEAD~2..HEAD (якщо запушили 2 коміти). Надішліть: git push. Це безпечно — історія не переписується, додаються revert-коміти.
Ситуація
•push містив секрети (паролі, ключі). Просто revert недостатньо — секрети залишаться в історії. Потрібно переписати історію: git reset --hard <коміт-до-секрету>, git push --force-with-lease. Потім обов'язково ротуєте утічені секрети — змініть паролі, перевипустіть ключі. Навіть після force-push секрети залишаються в reflog та cached-об'єктах Git на сервері 90 днів. Для повної очистки використовуйте BFG Repo-Cleaner або git filter-repo. На GitHub: зверніться в підтримку для видалення cached-копій.
Ситуація
•кілька розробників уже зробили pull вашої помилкової гілки. Не робіть force-push — це зламає їхні локальні репозиторії. Використовуйте git revert — створіть revert-коміти і запуште. Команда отримає revert через pull, і помилкові зміни скасуються у всіх.
Профілактика: налаштуйте branch protection на GitHub — забороніть прямий push в main. Використовуйте pull requests для всіх змін. Перед push перевіряйте поточну гілку: git branch — зірочка показує поточну.
Чи корисна ця відповідь?