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 , когда хотите взаимодействовать, Copilot не обязательно завершая текущую операцию. Например, если появляется диалог с разрешением, и вы хотите отклонить именно этот запрос, нажатие Esc отклоняет диалог и Copilot продолжает работать — просто инструмент, который вы отклонили, не будет использоваться. Аналогично, если вы поставили в очередь последующие запросы и хотите отменить их, не прерывая уже выполненную работу, нажатие 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 последнему написанию, остается неуправляемым, а не перезаписанным.
- Сеансы без отслеживания файлов. Если вы возобновляете сеанс, запущенный до включения отслеживания изменений файлов, доступна только перемотка беседы. Запустите новый сеанс, чтобы иметь возможность восстановить изменения файла.
- Удаленные или занятые сеансы. Перемотка недоступна для удаленных сеансов или пока сеанс по-прежнему работает.