Git·19 вопросов

Что делать, если сделал 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 — звёздочка показывает текущую.

Полезен ли этот ответ?

Другие вопросы этой темы

Связанные вопросы из других тем