Mono
Список ожидания

Как отменить изменения, сделанные ИИ-агентом в коде

Безопасно отмените правки ИИ-агента для кода: восстановите один файл, отбросьте незакоммиченные изменения или откатите его коммит, не потеряв свою работу.

Чтобы отменить изменения ИИ-агента для кода, проверьте, что изменилось, и используйте подходящую команду Git: git restore для изменённых файлов, git clean для новых и git revert для коммита. Сначала сохраните страховочную копию через git stash. Собственная команда Claude Code /rewind тоже умеет восстанавливать код, но отслеживает не все изменения.

Это руководство начинается с момента, когда вы уже решили отказаться от работы агента; принять решение поможет проверка изменений кода от ИИ. Mono показывает, что изменилось, но не отменяет изменения, поэтому и там команды те же.

1. Остановите агента и посмотрите, что изменилось

Сначала остановите агента. В Mono, пока агент работает, кнопка отправки превращается в кнопку отмены. В терминале в папке проекта выполните:

text
git status
git log --oneline -5

Первая команда показывает изменённые, удалённые, проиндексированные и новые файлы. Вторая показывает последние коммиты, включая сделанные агентом. Отметьте, какие изменения ваши: команды отмены не знают, кто написал строку.

Что вы видите Как это отменить
Изменённый или удалённый файл, не в индексе git restore <path>
Изменение в индексе git restore --staged <path>, затем отмените правку в файле
Новый неотслеживаемый файл git clean -n <path>, затем git clean -f <path>
Коммит, который вам не нужен git revert <commit>

В Mono «Показать изменения» выводит изменённые и новые файлы с последнего коммита, поэтому коммит, сделанный агентом, там не появится.

2. Сначала сохраните страховочную копию

Команды restore и clean безвозвратно отбрасывают незакоммиченную работу, поэтому сначала сохраните всё:

text
git stash push --include-untracked -m "before undo"
git stash apply --index

Первая команда сохраняет изменённые и новые файлы и очищает рабочее дерево, вторая возвращает их на место, сохраняя состояние индекса. Внешне ничего не меняется, но теперь в git stash list есть копия под названием «before undo».

Если отмените лишнее, git restore --source "stash@{0}" <path> вернёт изменённый файл из последней записи stash.

3. Отмените изменения в одном файле или его части

Выбирайте самую точечную команду:

  • git restore <path> отбрасывает неиндексированные правки в этом файле.
  • git restore --staged <path> убирает изменение из индекса, но оставляет правку в файле.
  • git restore -p <path> спрашивает о каждой изменённой части (hunk) отдельно; это помогает, когда вы и агент правили один и тот же файл.
  • git clean -n <path> показывает неотслеживаемые файлы, которые удалит git clean -f <path>. Всегда указывайте путь.

Каждый параметр объясняется в документации git restore.

4. Отмените всё, что агент оставил незакоммиченным

Если среди изменений нет ваших, отбросьте их все из корня проекта командой git restore --staged --worktree ., а для новых файлов выполните git clean -n . и git clean -f .. Иначе указывайте конкретные пути.

Вымышленный пример: вы попросили агента переименовать CSS-класс .btn-primary в .button-main в проекте «tidy-recipes». Раньше он уже закоммитил обновление lock-файла, о котором никто не просил. На этот раз он изменил класс в 3 файлах, переформатировал 12 файлов, не связанных с задачей, и создал styles/tokens.css. Тем временем вы вручную правили README.md и хотите эти правки сохранить.

После страховочной копии восстановите файлы агента (здесь это src/ и styles/main.css) и удалите его новый файл:

text
git restore src/ styles/main.css
git clean -n styles/tokens.css
git clean -f styles/tokens.css

Не используйте здесь git restore .: эта команда отбросит и вашу правку README. Если у вас были правки внутри src/, перечислите файлы агента по одному.

Теперь git status показывает только README.md, а git diff показывает только ваши строки. Коммит с lock-файлом по-прежнему на месте.

5. Отмените коммит, который агент уже сделал

git revert создаёт новый коммит, который отменяет предыдущий. В документации git revert сказано, что для этого нужно чистое рабочее дерево, поэтому сначала отложите правку README:

text
git stash push -m "readme" README.md
git revert <lockfile commit>
git stash pop

Возьмите хеш из git log и добавьте --no-edit, чтобы пропустить редактор сообщения. git stash pop возвращает «readme» и оставляет «before undo» в списке. Теперь git status показывает только README.md, а git log --oneline показывает сверху Revert "Update lockfile".

Если коммит уже отправлен в удалённый репозиторий, используйте revert, а не git reset: reset переписывает историю, которая у других уже может быть. Если после reset или rebase коммит кажется потерянным, git reflog покажет коммиты, на которых вы недавно были, с их хешами.

6. Используйте контрольные точки агента, а Git держите в запасе

Claude Code сохраняет контрольную точку перед каждым запросом: выполните /rewind или дважды нажмите Esc при пустом поле ввода, чтобы восстановить код, беседу или и то и другое. В его документации о контрольных точках перечислены ограничения: изменения, сделанные командами оболочки, не отслеживаются, внешние правки обычно не фиксируются, а контрольные точки не заменяют систему контроля версий. Доступность этой функции также зависит от приложения, в котором вы запускаете агента.

Поэтому сделайте Git запасным вариантом:

  • Делайте коммит или создавайте ветку перед каждой задачей, чтобы «последний коммит» означал «до агента».
  • Скажите агенту не делать коммиты без спроса, например в файле AGENTS.md.
  • Не отключайте запросы разрешений. Режим YOLO в Mono, который принимает любой запрос агента, по умолчанию выключен. Подробнее о том, что проверять, прежде чем дать разрешение.

В Mono карточка проекта открывает терминал в папке проекта на вашем компьютере, в том числе с телефона (см. руководство по удалённой работе с кодом). Mono пока недоступен, но вы можете записаться в список ожидания.

Автор

Reunified делает приложения, которые снова собирают разрозненное воедино.

Читайте также

Все статьи

5 мин чтения

Как защититься от промпт-инъекций в ИИ-ассистентах

Ограничьте, что ИИ-ассистент может делать с письмами, веб-страницами и файлами, не отключайте одобрение действий, безопасно проверьте настройки и узнайте, что делать, если им управляют извне.

Скоро

Запишитесь в список ожидания

Оставьте адрес электронной почты, и мы напишем вам, когда Mono можно будет скачать.

Где вы будете пользоваться Mono?