4. Сброс нежелательных изменений

Отмена подготовки изменений

Допустим, мы решили выделить наш Hello, World!. Давай превратим его в заголовок!

И как это сделать?

Для этого обернём содержимое hello.html в теги <head>. Результат должен выглядеть так:

Файл: hello.html
<head>Hello, World!</head>
Задача
Пройдено

Оберни текст в hello.html тегами <head> </head> и добавь изменения в область подготовки.

Секундочку... Я сказал теги <head> </head>? Ой, извини, конечно же я имел в виду <h1> </h1>! Увы, изменения уже подготовлены.

Блин... И что теперь делать?

Прежде чем что-то предпринимать, давай выполним git status, чтобы понять, что вообще происходит.

СУПЕРПОЛЕЗНАЯ ПОДСКАЗКА: В терминале можно использовать стрелки и для навигации по истории команд. Это отличный способ не печатать одно и то же по сто раз.

Задача
Пройдено

Выполни команду git status, чтобы проверить состояние репозитория.

Должно получиться что-то такое:

Результат:

On branch main Changes to be committed:   (use "git restore --staged <file>..." to unstage)       modified: hello.html

Давай последуем совету команды и уберём изменения из области подготовки. Для этого используем команду git restore с флагом --staged.

Задача
Пройдено

Выполни команду git restore --staged ., чтобы очистить область подготовки.

Давай снова проверим статус.

Задача
Пройдено

Выполни команду git status, чтобы проверить состояние репозитория.

Вывод должен быть таким:

Результат:

On branch main Changes not staged for commit:   (use "git add <file>..." to update what will be committed)   (use "git restore <file>..." to discard changes in working directory)       modified: hello.html

no changes added to commit (use "git add" and/or "git commit -a")

Сюрприз-сюрприз! Изменения всё ещё на месте! Зато они больше не подготовлены для коммита.

И что дальше?

Чтобы отменить их полностью, можно выполнить git restore без флагов (как на предыдущем шаге курса).

Задача
Пройдено

Выполни git restore ., чтобы очистить рабочее дерево.

Давай снова проверим статус.

Задача
Пройдено

Выполни команду git status, чтобы проверить состояние репозитория.

Вывод должен быть таким:

Результат:

On branch main nothing to commit, working tree clean

Вот и всё! Изменения отменены, и рабочее дерево снова чистое.

На самом деле мы могли бы вернуть рабочее дерево в чистое состояние за один раз. Команда git restore работает в двух режимах: без флагов git restore работает с рабочим деревом. С --staged — с областью подготовки. Можно передать оба флага одновременно, чтобы разом очистить и область подготовки, и рабочее дерево: git restore --staged --worktree ..

Next step
Хочешь попробовать Сюжетный режим?

Пройди курс так, как задумано: порционное обучение, чёткий порядок и постепенное открытие статей в Gitопедии. В любой момент можно продолжить работу с настоящим Git прямо в VS Code, Cursor, Antigravity или Windsurf.

Сюжетный режим
БЕСПЛАТНО
(требуется войти в аккаунт)