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

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

Ситуация

Представьте: вы работаете над фичей в ветке 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 — создает новую локальную ветку с тем же именем, которая будет «следить» за удаленной веткой.

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

Как обновить базовую ветку фичи: кейс с rebase

Апрель 23, 2026 г.

В командной разработке на Git регулярно возникает ситуация: вы работаете над фичей в ветке feature/xxx, ответвившись от master. Пока вы пишете код, коллеги ...

Читать

Удалить новые (untracked) файлы в git

Июль 31, 2024 г.

Иногда нужно избавиться от новых (лишних) файлов, привожу примеры команд. Если это случается регулярно, в процессе компиляции, сборки, у вас создаются файлы, которые вы не будете включать в commit, то, наверное, стоит подумать и включить их в настройки ...

Читать

Создание патча для модуля Drupal

Декабрь 4, 2017 г.

В Drupal для решения ваших задач вы подбираете contributed модули. Отлично, если модуль поддерживается автором, в нем нет багов и есть нужный вам функционал. В противном случае, вы, возможно, правите модуль и используете его для себя. Но, наверное, было ...

Читать

Как обновить ветку в Git без переключения на неё

Май 1, 2026 г.

Предположим, вы работаете в ветке feature, а коллеги обновили master. Вам нужно подтянуть свежие изменения в локальный master, но не хочется терять контекст и переключаться туда-обратно. Стандартный git pull работает только с текущей веткой. Что делать? ...

Читать
 

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

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



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