Introduction
Когда вы работаете в интерактивной Copilot CLI сессии, вы можете нажать Esc или Ctrl+C , чтобы контролировать, что Copilot происходит. Оба нажатия клавиши могут отменять операции, но работают немного иначе:
- Ctrl+C действует мгновенно, без подтверждения второго нажатия — сначала удаляет все очередные запросы (по одному за нажатие), затем отменяет текущую операцию.
- Одно нажатие клавиши Esc даёт более постепенное, постепенное управление. Хотя Copilot он активно работает, один esc не отменяет сразу, он показывает напоминание, а вторая нажатия прерывает текущую операцию. В локальном сеансе все запросы в очереди обрабатываются в следующем шаге. Во время удаленного или присоединенного сеанса второе нажатие полностью отменяет операцию, а запросы в очереди не переносятся в последующий поворот.
Если Copilot изменения уже были сделаны и вы хотите отменить их, можно выполнить откат до предыдущей точки в сеансе. Как Copilot работает, отслеживает изменения файла, Copilot CLI которые он делает, как он отвечает на каждый запрос. Это позволяет переключиться на более раннюю точку, дважды нажав клавишу ESC при Copilot простое, а входная область пуста. При перемотке выберите, следует ли перемоткать только беседу или восстановить измененные файлы Copilot .
Что делает прессинг Esc в разных ситуациях
Одно нажатие Esc выполняет разные действия в зависимости от текущего состояния сессии:
| Текущее состояние | Что делает прессинг Esc |
|---|---|
| Copilot активен без очередных подсказок. | Появляется напоминание «Esc снова для отмены». Операция запуска отменяется только если вы снова нажате Esc в течение полсекунды. |
| Copilot активен, и есть очередные запросы. | Появляется напоминание «Esc снова для отмены». Нажатие клавиши ESC снова прерывает текущую операцию. В локальном сеансе запросы в очереди обрабатываются в следующем шаге; в удаленном или подключенном сеансе операция полностью отменена, и запросы в очереди не выполняются в качестве последующей очереди. |
| Открыт диалог разрешения. | Один Esc отказывает в ожидающем запросе (второе нажатие не требуется). |
| Открыт диалог, наложение или picker. | Закрывает диалог, наложение или picker. |
| Copilot бездействует. | Краткое напоминание о том, что если быстро нажать Esc , откроется перемотчик назад. См. Откат изменений. |
Дважды нажимая клавишу ESC , когда Copilot неактивна и входная область пуста, можно откатить до более ранней точки в сеансе. В других ситуациях двойной esc выполняет одно из следующих действий, в этом порядке приоритета:
- Отменяет выполняемую команду оболочки.
- Останавливает текущий ответ.
- Останавливает фоновые агенты.
- Очищает текст в области ввода.
Если ни одно из этих действий не применяется, отображается средство выбора перемотки.
Когда использовать Esc вместо Ctrl+C
Главное отличие этих двух способов отмены операции в том, что Esc предназначен для постепенного, целенаправленного вмешательства, а Ctrl+C — жёсткий остановочный режим.
Используйте ESC , если требуется подтверждение нажатия клавиш перед прерыванием операции. Если появится диалоговое окно разрешений и вы хотите запретить этот конкретный запрос, нажимая клавишу ESC после отклонения запроса и остановки текущей операции. Если в локальном сеансе вы вставили в очередь последующие запросы, нажатие клавиши ESC дважды прерывает текущую операцию и обрабатывает запросы в очереди по мере следующего поворота. В удаленном или подключенном сеансе нажатие клавиши ESC дважды полностью отменяет операцию, а запросы в очереди не выполняются в качестве последующей очереди.
Используйте Ctrl+C , когда хотите отменить без второго подтверждающего нажатия, которое требуется для Esc . Если очередь на запросы не появляется, один Ctrl+C немедленно отменяет активную операцию. Если у вас есть подсказки в очереди, каждый Ctrl+C удаляет последний поставленный в очередь запрос — один за нажатие — и отменяет активную операцию только после того, как очередь опустела. Запись файлов, которая уже в процессе, завершится — файлы не остаются повреждёнными во время записи — но все оставшиеся запланированные изменения отменяются. Второе нажатие Ctrl+C в течение двух секунд, когда область ввода пуста, полностью завершает сессию.
В качестве эмпирического правила: используйте Esc , когда хотите вмешаться избирательно, и Ctrl+C , когда хотите остановиться и начать заново.
Откат изменений
Пока Copilot он неактивен и в области ввода нет текста, вы можете дважды нажать Esc , чтобы отобразить список точек текущей сессии, к которым можно откатиться. Каждая точка соответствует отправленной запросу, а перемотка возвращает сеанс обратно в состояние, в которое оно было сразу же, прежде чем Copilot начать работу с этим запросом.
Выбрав точку перемотки, вы решите, следует ли:
- Перемотка беседы только, оставляя файлы нетронутыми.
- Перемотка беседы и восстановление файлов, которые возвращают измененные файлы Copilot , оставляя собственные последующие изменения на месте.
Так как он восстанавливает только измененные файлы Copilot , а не всю рабочую область, перемотка работает в любом каталоге, включая папки, которые не являются репозиториями Git.
Для полной информации о том, как использовать двойное нажатие клавиши Esc для отката изменений, внесённых во время сессии, см. Откат изменений, внесённых во GitHub Copilot CLI время сессии.
Предупреждение
Перемотка восстанавливает всё рабочее пространство в состояние, в котором оно было на выбранном снимке. Это отменяет все изменения, внесённые после этого момента — не только изменения, внесённые Copilot, но и любые ручные правки, а также изменения, вытекающие из команд shell. Любые новые файлы, созданные в рабочем пространстве после снимка, удаляются независимо от их статуса в Git.
Что происходит, когда вы откатываетесь назад
Действия, возникающие при откате, зависят от выбранного варианта.
Если вы решили перемотить беседу и восстановить файлы:
- Файлы восстанавливаются. Измененные файлы Copilot возвращаются в состояние, в которое они находились до выбранного запроса. Файлы, текущее содержимое которого больше не соответствует Copilot последнему написанию( например, потому что вы отредактировали их самостоятельно), пропускаются, чтобы ваши последующие изменения не перезаписывали.
- История сессий сокращается. Беседа перенаводится к выбранной точке. Все сообщения и вызовы инструментов, возникшие после этого момента, удаляются из сессии.
- Устаревшие моментальные снимки удаляются. Захваченные изменения файла для отброшенных поворотов очищаются. Предыдущие точки остаются доступными для будущих перемоток.
- Откат подтверждён. После отката Copilot отобразится сообщение, указывающее, сколько файлов было восстановлено, и заметите все файлы, пропущенные.
- Ваш запрос восстановлен. Запрос, связанный с выбранной точкой, помещается в область ввода, поэтому ее можно изменить и повторно отправить.
Если вы решили перемоткать только беседу, ваши файлы остаются незамеченными: журнал сеансов усечен (шаг 2) и запрос восстанавливается в области ввода (шаг 5).
Изменения, которые нельзя откатить
Восстановление файлов пропускается или недоступно в следующих ситуациях:
- Файлы более 10 МБ. Отдельные файлы размером более 10 МБ пропускаются во время записи, поэтому изменения этих файлов не восстанавливаются во время отката.
- Более 500 изменённых файлов. Если во время одного поворота было изменено более 500 файлов, изменения файлов для этого поворота не записываются, поэтому вы не сможете восстановить файлы для него. Другие повороты не влияют.
- Файлы, которые вы изменили самостоятельно. Файлы, текущее содержимое которого больше не соответствует Copilot последнему написанию, остается неуправляемым, а не перезаписанным.
- Сеансы без отслеживания файлов. Если вы возобновляете сеанс, запущенный до включения отслеживания изменений файлов, доступна только перемотка беседы. Запустите новый сеанс, чтобы иметь возможность восстановить изменения файла.
- Удаленные или занятые сеансы. Перемотка недоступна для удаленных сеансов или пока сеанс по-прежнему работает.