Как полностью затереть локальную ветку и привести её к состоянию из удаленного репозитория

Бывают ситуации, когда локальные изменения в ветке настолько запутались, что проще полностью сбросить всё и начать «с чистого листа» от удаленной версии. В этой статье рассмотрим два надежных способа, как это сделать.

Ситуация

Представьте: вы работаете над фичей в ветке feature/new-design, накоммитили кучу экспериментального кода, а потом поняли, что всё пошло не так. Или просто хотите получить точную копию ветки из удаленного репозитория, полностью удалив локальные изменения.

Нам нужно:

  • Скачать последнюю версию из origin
  • Полностью заменить локальную ветку на удаленную
  • Удалить все локальные коммиты и изменения

Способ 1: git reset —hard

Это самый прямой способ — вы просто сбрасываете локальную ветку до состояния удаленной.

Пошаговая инструкция:

Что происходит:

  • git fetch origin — загружает свежие данные из удаленного репозитория, не сливая их с локальной веткой. Это безопасная команда.
  • git reset --hard origin/название_ветки — выполняет жесткий сброс:
    • Указатель ветки перемещается на тот же коммит, что и в origin
    • Полностью удаляются все локальные коммиты, которых нет в удаленной ветке
    • Безвозвратно стираются все некоммиченные изменения в рабочей директории

Способ 2: удалить и создать ветку заново

Этот способ еще более радикальный — вы полностью удаляете локальную ветку и создаете её заново из удаленного репозитория.

Пошаговая инструкция:

Что происходит:

  • git branch -D — удаляет локальную ветку даже если она не слита с другими ветками (флаг -D — это форсированное удаление, в отличие от -d, который требует слияния).
  • git checkout -b feature/new-design origin/feature/new-design — создает новую локальную ветку с тем же именем, которая будет «следить» за удаленной веткой.

Мало букафф? Читайте есчо !

Тонкости настройки в .gitignore

Июль 17, 2017 г.

Настройки в файле .gitignore позволяют исключить из списка файлов сканируемых GIT, все то что отслеживать не надо. Обычно это так называемые юзер-файлы, изображения, архивы, документация и т.п. В данной статье рассмотрим типовой случай настоек в .gitignore. ...

Читать

Как сравнить два произвольных файла не включенных в репозиторий средствами git diff

Июль 1, 2022 г.

Утилита Git diff может сравнивать не только изменения между ветками, но и вообще произвольные объекты файловой системы, которые даже не включены в репозиторий. ...

Читать

GIT workflow или как работать с проектом

Апрель 2, 2024 г.

Как использовать GIT, может зависеть от многих факторов, например как проходит тестирование, работает ли целая команда над проектом или один разработчик соло. Соло разработка Концепция работы с GIT в случае одного разработчика сводится обычно ...

Читать

Используем PAT для работы с github

Август 19, 2021 г.

GitGub отключили парольную авторизацию, и предлагают использовать SSH с PAT. О том как это настроить и использовать читайте далее в статье. Сложно избавиться о раздражения, когда требуется что то опять настраивать для выполнения ежедневных рутинных ...

Читать
 

Комментарии к «Как полностью затереть локальную ветку и привести её к состоянию из удаленного репозитория»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: