실행 취소 및 다시 실행 명령
개요
OpenCode의 /undo 및 /redo 명령은 코드 수정 및 대화 기록을 관리하기 위한 강력한 기능을 제공합니다. 이러한 명령을 사용하면 변경사항을 되돌리거나 복원할 수 있어 개발 워크플로우에 유연성과 제어력을 제공합니다.
명령 참조
/undo
대화의 마지막 메시지 또는 코드 수정을 취소합니다. 이에는 Git 저장소가 필요합니다.
단축키: Ctrl+X U
/redo
이전에 취소한 메시지 또는 코드 수정을 다시 실행합니다. 이에는 Git 저장소가 필요합니다.
단축키: Ctrl+X R
작동 원리
OpenCode는 대화 중에 이루어진 변경사항을 추적하기 위해 Git의 버전 제어 기능을 사용합니다. /undo를 사용하면 다음과 같이 작동합니다:
- 대화의 현재 상태를 기록합니다
- 이전 상태로 되돌아갑니다
- 이 변경을 반영하도록 Git 기록을 업데이트합니다
마찬가지로 /redo를 사용하면 다음과 같이 작동합니다:
- Git 기록에서 이전에 취소된 변경사항을 확인합니다
- 가장 최근에 취소된 상태를 복원합니다
- 이 복원을 반영하도록 대화를 업데이트합니다
작동 데모
기본 실행 취소/다시 실행 워크플로우
# 대화 시작
> 이진 검색 알고리즘을 구현하는 방법을 설명하세요
# 코드 구현이 포함된 응답 받기
AI: Python에서의 이진 검색 구현 예시입니다...
# 다른 언어를 묻고 싶다는 것을 깨닫기
> /undo
# JavaScript 구현 요청
> JavaScript에서 이진 검색 알고리즘을 구현하는 방법을 설명하세요
# JavaScript 구현 받기
AI: JavaScript에서의 이진 검색 구현 예시입니다...
# 결국 Python 버전이 더 좋다고 결정
> /undo
> /redo
# 이제 JavaScript 구현으로 돌아감
코드 수정 워크플로우
# 파일로 시작
> @src/utils.js
# AI에게 코드 리팩토링 요청
> 이 코드를 화살표 함수를 사용하도록 리팩토링하세요
# AI가 파일 수정
AI: 화살표 함수를 사용하도록 코드를 리팩토링했습니다...
# 변경사항 검토 후 마음에 들지 않음
> /undo
# 다른 리팩토링 방법 요청
> 이 코드를 더 설명적인 변수명을 사용하도록 리팩토링하세요
# AI가 새로운 변경 적용
AI: 변수명을 더 설명적으로 업데이트했습니다...
일반적인 시나리오
1. 오류 수정
시나리오: 잘못된 질문을 하거나 잘못된 정보를 제공한 경우.
해결책:
> Python에서 for 루프의 구문은 무엇입니까?
AI: Python에서 for 루프를 작성하는 방법입니다...
> /undo
> Java에서 for 루프의 구문은 무엇입니까?
2. 다양한 접근 방식 탐색
시나리오: 문제에 대한 여러 솔루션을 탐색하려는 경우.
해결책:
> JavaScript에서 배열을 정렬하는 방법은?
AI: Array.sort()를 사용하여 배열을 정렬하는 방법입니다...
> /undo
> 내장 메서드를 사용하지 않고 JavaScript에서 배열을 정렬하는 방법은?
AI: 버블 정렬 알고리즘을 구현하는 방법입니다...
> /undo
> /redo
# 첫 번째 솔루션으로 돌아감
3. 코드 변경 관리
시나리오: 원본 코드를 잃지 않고 다양한 코드 변경을 시도하려는 경우.
해결책:
> @src/app.js
> 이 코드를 성능을 위해 최적화하세요
AI: ...를 통해 코드를 최적화했습니다
> /undo
> 이 코드를 가독성을 위해 리팩토링하세요
AI: ...를 통해 코드를 더 읽기 쉽게 리팩토링했습니다
> /undo
> 두 가지 최적화를 결합하세요
4. 부적절한 제안에서 복구
시나리오: AI가 작동하지 않거나 버그를 도입하는 솔루션을 제공한 경우.
해결책:
> 내 코드의 이 버그를 수정하세요: @src/error.js
AI: ...를 통해 버그를 수정했습니다
> !node test.js
Error: ...
> /undo
> 다른 방법으로 이 버그를 수정하세요
실행 취소 기능의 중요성
실행 취소 기능은 다음과 같은 이유로 중요합니다:
- 안전망: 변경사항이 예상대로 작동하지 않는 경우 변경을 되돌리는 방법을 제공합니다
- 실험: 물건을 망치지 않는 두려움 없이 다양한 접근 방식을 시도하도록 격려합니다
- 학습: 다양한 솔루션을 나란히 비교할 수 있습니다
- 효율성: 변경사항이 기대에 맞지 않는 경우 수동 재작업을 피하고 시간을 절약합니다
- 자신감: 복잡한 코드 변경을 탐색할 자신감을 줍니다
모범 사례
실행 취소/다시 실행을 사용할 때
- 대규모 변경 전: 깨끗한 상태에서 시작하기 위해 이전 변경을 취소합니다
- 예상치 못한 결과 받은 후: 알려진 좋은 상태로 돌아가기 위해 취소합니다
- 여러 옵션 탐색 시: 다른 솔루션을 비교하기 위해 실행 취소/다시 실행을 사용합니다
- 코드 검토 중: 원본 코드를 보기 위해 변경을 취소한 후 수정을 보기 위해 다시 실행합니다
효과적인 사용을 위한 팁
- 키보드 단축키 사용: 시간을 절약하기 위해 실행 취소에는
Ctrl+X U를, 다시 실행에는Ctrl+X R을 사용하세요 - 다른 명령과 결합: 긴 대화를 관리하기 위해
/undo를/compact와 결합하세요 - Git 요구 사항에 주의: 이러한 명령을 사용하기 전에 프로젝트가 Git 저장소에 있는지 확인하세요
- Git 상태 확인: 어떤 변경이 추적되고 있는지 이해하려면 때때로
!git status를 확인하는 것이 도움이 됩니다
문제 해결
일반적인 문제
- Git 초기화되지 않음: Git 관련 오류가 표시되면
!git init을 사용하여 저장소를 초기화하세요 - 취소할 변경이 없음:
/undo가 작동하지 않으면 대화의 시작 부분에 도달했을 수 있습니다 - 다시 실행할 변경이 없음:
/redo가 작동하지 않으면 가장 최근 상태에 도달했을 수 있습니다 - Git 충돌: 드물게 Git 충돌이 발생할 수 있습니다 - 표준 Git 도구를 사용하여 해결하세요
오류 메시지
- “Git repository not found”: 프로젝트 디렉토리에서 Git 저장소를 초기화하세요
- “No changes to undo”: 대화의 시작 부분에 도달했습니다
- “No changes to redo”: 가장 최근 상태에 도달했습니다
고급 사용법
Git 명령과 결합
보다 강력한 버전 제어를 얻기 위해 OpenCode의 실행 취소/다시 실행 명령을 Git 명령과 결합할 수 있습니다:
# OpenCode를 사용하여 변경하기
> @src/main.js
> 이 함수에 오류 처리를 추가하세요
# Git 상태 확인
> !git status
# 필요한 경우 취소
> /undo
# 만족하면 변경사항 커밋
> !git add src/main.js
> !git commit -m "Add error handling"
계획 모드에서의 실행 취소/다시 실행
계획 모드를 사용할 때 실행 취소/다시 실행 명령은 유사하게 작동하지만 계획 상태에도 영향을 줍니다:
> /plan
> Task 1: 사용자 인증 구현
> Task 2: 데이터베이스 통합 추가
> Task 3: API 엔드포인트 생성
> /plan finalize
# 계획을 수정하기 위해 취소
> /undo
> Task 3: RESTful API 엔드포인트 생성
> /plan finalize
결론
/undo 및 /redo 명령은 OpenCode에서 코드 수정 및 대화 기록을 관리하기 위한 필수 도구입니다. 실험을 위한 안전망과 다양한 접근 방식을 비교하는 방법을 제공함으로써 이러한 명령은 보다 자신감 있게 효율적으로 작업할 수 있도록 합니다. 최상의 결과를 얻기 위해 Git과 결합하여 사용하는 것을 잊지 마세요. 필요한 경우 언제든지 되돌아갈 수 있다는 것을 알고 있기 때문에 다양한 솔루션을 시도하는 데 주저하지 마세요.