Как отменить сделанные изменения

Система управления версиями позволяет вам отменять сделанные изменения. Это может потребоваться, например, если вы зафиксировали изменения слишком рано и забыли добавить какие-либо файлы к коммиту либо хотите удалить неактуальные или ошибочные изменения.

В данной статье мы рассмотрим основные способы отмены сделанных изменений. При групповой разработке использовать команды сброса изменений следует с особой осторожностью, так как они приводят к изменению истории коммитов в репозитории проекта. Если с веткой, для которой выполняется сброс, работают другие разработчики, это может нарушить их работу.

Переключиться на коммит

Если вы хотите посмотреть, как выглядел ваш проект на стадии определенного коммита, вы можете переключиться на этот коммит, нажав на него правой кнопкой мыши и выбрав команду Переключиться на коммит.

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

Сбросить ветку до заданного коммита

Чтобы отменить один или несколько последних коммитов в текущей ветке, выполните следующие действия:

  1. Нажмите на кнопку Синхронизация изменений, чтобы синхронизировать ваши изменения с изменениями в репозитории проекта.

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

  2. Щелкните правой кнопкой мыши на нужный коммит в группе Коммиты и выберите один из следующих пунктов:
    • Сбросить текущую ветку до коммита — позволяет сбросить ветку до выбранного коммита;
    • Сбросить текущую ветку до предыдущего коммита — позволяет сбросить ветку до коммита, который предшествует выбранному коммиту.

    Если текущая ветка связана с задачей, то данные команды также доступны в группе Задачи представления . Раскройте список коммитов для текущей задачи, щелкните правой кнопкой мыши на нужный коммит и выберите требуемую команду сброса изменений в контекстном меню.

  3. Выберите тип сброса изменений:

    • Сброс (git reset / git reset --mixed) — сбрасывает ветку до указанного коммита, сохраняя все сделанные после него изменения. Они будут отображаться в группе Изменения как ожидающие индексации.

    • Мягкий сброс (git reset --soft) — сбрасывает ветку до указанного коммита, сохраняя все сделанные после него изменения. Они будут отображаться в группе Промежуточные изменения как проиндексированные и ожидающие фиксации.

    • Жесткий сброс (git reset --hard) — сбрасывает ветку до указанного коммита и удаляет все сделанные после него изменения.
  4. Если вы выбрали Сброс или Мягкий сброс, выберите и проиндексируйте файлы, которые вы хотите включить в новый коммит, введите сообщение коммита и нажмите Зафиксировать и отправить (принудительно), чтобы отправить изменения в репозиторий проекта.

    Если вы выбрали Жесткий сброс, нажмите Отправить (принудительно), чтобы удалить выбранные коммиты из истории текущей ветки в удаленном репозитории.

    Совет: Другой способ отправить изменения в удаленный репозиторий проекта — щелкнуть по имени текущей ветки в панели состояния и выбрать команду Зафиксировать и принудительно отправить изменения (или Принудительно отправить изменения в случае жесткого сброса).

  5. Нажмите ОК в открывшемся окне, чтобы подтвердить операцию. История текущей ветки в репозитории проекта будет перезаписана.

Отменить сброс изменений

Система управления версиями позволяет вам отменить сброс изменений и откатить текущую ветку до состояния ветки в удаленном репозитории. Для этого нажмите на стрелку рядом с кнопкой принудительной оправки изменений и выберите пункт Сбросить текущую ветку.

Подтвердите сброс ветки в открывшемся окне, нажав ОК.