zshell

Git 패널

변경을 만든 셸 옆에서 스테이징, 검토, 커밋과 푸시를 수행하세요.

Cmd+Shift+G를 누르면 프로젝트의 기준 저장소에서 패널을 엽니다. Zshell이 저장소를 선택하는 방식은 프로젝트 디렉터리에서 설명합니다.

모든 작업은 Zshell이 대신 실행하는 Git 명령입니다. 완료 여부 외에 전할 내용이 있으면 출력도 보여 줍니다. 요청하지 않은 기록 재작성, 스쿼시나 강제 푸시는 하지 않습니다.

Git 도구 막대

Zshell은 활성 탭 아래에 간결한 도구 막대를 표시할 수 있습니다. 저장소에서는 현재 브랜치와 추가/삭제 줄 수 합계를 보여 주고, 변경이 없는 트리에는 초록색 변경 없음 상태를 표시합니다. 추적되지 않는 파일도 추가 줄 수에 포함됩니다.

  • 브랜치를 클릭하여 로컬 브랜치를 검색하고 전환하세요. 목록에는 저장소의 기본 브랜치가 표시됩니다.
  • 변경 수를 클릭하면 Git 패널이 열립니다.
  • 저장소 밖에서 항상 표시 모드를 사용하면 Git 저장소 없음 버튼을 표시하며, 클릭하면 패널의 초기화 화면을 엽니다.

설정 → 일반에서 가리기, 자동 또는 항상 표시를 고르거나 toolbar.visibility를 설정하세요. 기본값은 가리기입니다. 표시 중인 도구 막대의 컨텍스트 메뉴에서도 숨길 수 있습니다.

변경된 파일

파일은 충돌, 스테이징된 변경, 스테이징되지 않은 변경으로 나뉩니다. 행 위에 마우스를 올려 버튼을 사용하거나 컨텍스트 메뉴를 여세요.

버튼동작
+파일 스테이징
−스테이징 해제
↺파일 변경 사항 버리기

패널 머리글의 모든 변경 사항 버리기는 먼저 확인을 요청합니다. 이 작업은 다른 Git 명령으로 되돌릴 수 없는 작업입니다.

충돌한 파일은 일반 스테이징 버튼 대신 해결됨으로 표시 (스테이징)를 보여 줍니다. 충돌 해결 여부를 별도의 명확한 단계로 결정할 수 있습니다.

머리글의 깔때기 버튼으로 파일 이름을 필터링하면 변경이 많을 때 빠르게 찾을 수 있습니다.

차이 읽기

변경된 파일을 클릭하면 터미널을 가리지 않고 옆 분할 창에 차이를 엽니다. 컨텍스트 메뉴의 파일 열기로 편집 가능한 파일 자체를 열거나 파일을 옆에 열기를 사용할 수도 있습니다.

큰 차이도 반응성을 유지합니다. 천 개 파일을 포함한 변경 묶음도 한 줄 변경만큼 빠르게 열리며 끊김 없이 스크롤됩니다.

차이 보기 위의 컨트롤은 다음 두 설정을 모든 차이 보기에 공통으로 기억합니다.

  • 통합 보기 / 분할 — 한 열 배치와 좌우 비교 배치를 전환합니다.
  • 검토 / 편집 — 현재 작업 트리의 스테이징되지 않은 파일에 표시됩니다. 변경 후 내용을 직접 편집하고 Cmd+S로 저장하세요. 저장하지 않은 파일을 닫을 때의 처리는 일반 편집기와 같습니다.

스테이징된 차이와 과거 커밋의 차이는 안전하게 쓸 수 있는 현재 파일이 아니라 스냅샷이므로 읽기 전용입니다. 한 차이 보기를 편집 또는 분할 모드로 바꾸면 다른 열린 차이 보기에도 선호 설정이 반영되지만 편집할 수 없는 차이를 편집 가능하게 만들지는 않습니다.

커밋

메시지를 입력하고 커밋 버튼을 누르거나 메뉴에서 다음을 선택하세요.

  • 스테이징된 항목 커밋 — 스테이징한 내용만 정확히 커밋합니다.
  • 모두 스테이징 후 커밋 — 추적 중인 모든 변경을 스테이징하고 커밋합니다.
  • 마지막 커밋 수정 — 스테이징된 변경을 이전 커밋에 포함합니다.
  • 모두 스테이징 후 커밋 수정

아래에는 최근 커밋 목록이 표시되며 컨텍스트 메뉴에서 커밋 해시 복사와 커밋 메시지 복사를 사용할 수 있습니다.

브랜치

머리글의 브랜치 이름은 메뉴입니다. 다른 브랜치를 골라 전환하거나 새 브랜치 생성…을 선택하여 현재 위치에서 새 브랜치를 만드세요.

작업 트리

Git 패널은 저장소에 속한 모든 작업 트리와 각 브랜치, 체크아웃 경로를 표시합니다. 활성 체크아웃은 현재로 표시합니다. 작업 트리를 클릭하면 해당 디렉터리에 새 터미널 탭이 열리므로 같은 프로젝트 안에서 각 체크아웃의 셸 맥락을 따로 유지할 수 있습니다. 목록이 길면 정해진 영역 안에서만 스크롤되며 구역 머리글, 커밋 컨트롤과 변경 파일 목록은 그대로 유지됩니다. 작업 트리 머리글을 클릭하여 접거나 펼치세요.

HEAD가 분리된 작업 트리는 브랜치 이름 대신 분리된 HEAD를 표시합니다. 베어 저장소도 목록에는 표시되지만 작업 디렉터리가 없으므로 터미널 탭에서 열 수 없습니다.

워크트리 세션

로컬 Git 저장소의 터미널에서 **터미널 → 워크트리에 새 세션…**을 선택하거나 Cmd+Opt+T를 누르세요. 탭과 + 버튼의 컨텍스트 메뉴에도 같은 작업이 있습니다. 새 브랜치 또는 기존 로컬 브랜치와 아직 없는 디렉터리를 선택합니다. 새 브랜치는 저장소의 기본 브랜치에서 시작하며 현재 HEAD를 명시적으로 선택할 수도 있습니다. 기존 브랜치는 현재 커밋을 유지합니다. 제안된 디렉터리는 원본 체크아웃 옆에 있습니다.

분할 창은 세션의 워크트리 연결을 상속하며 저장된 레이아웃에서도 복원됩니다. 연결된 세션을 닫으면 워크트리 유지, 워크트리 제거, 취소를 선택할 수 있습니다. 변경되거나 추적되지 않거나 무시된 파일, 기록된 기준에 병합되지 않은 커밋, 잠금 또는 이를 사용하는 다른 열린 세션이 있으면 제거할 수 없습니다. Git 브랜치는 항상 유지됩니다.

외부 터미널에서 zshell +session으로 세션을 만들고 닫을 수 있습니다. projects가 반환한 ID를 --project에 지정하세요. Zshell 내부에서는 호출 터미널의 프로젝트를 자동으로 사용합니다. 세션은 기본적으로 백그라운드에서 생성하며 --focus로 전환할 수 있습니다. --base HEAD 또는 --base REF로 다른 기준을, --worktree NEW_DIR로 디렉터리를 지정합니다. 필요하면 --connection FILE로 실행 중인 인스턴스를 선택하세요. 명시적인 --remove-worktree 없이 닫으면 워크트리를 유지하며 check로 현재 정리 가능 여부를 확인합니다.

zshell +session projects
zshell +session new --project PROJECT_ID --cwd /path/to/repo --branch feat/task
zshell +session list --project PROJECT_ID
zshell +session check --project PROJECT_ID --session SESSION_ID
zshell +session close --project PROJECT_ID --session SESSION_ID --remove-worktree

원격 저장소

⋯ 메뉴에는 원격 저장소와 통신하는 작업이 모여 있습니다.

작업동작
가져오기원격 추적 참조 갱신
풀 (Fast-forward만)병합 커밋을 만들지 않고 풀
푸시현재 브랜치 푸시
브랜치 게시업스트림이 없는 브랜치를 푸시하며, 원격이 여러 개면 대상 선택
변경 사항 동기화Fast-forward 풀 후 푸시
모든 변경 사항 스태시추적되지 않는 파일을 포함해 모든 변경 저장
스태시 적용 후 제거가장 최근 스태시 복원

브랜치 옆 배지는 업스트림에 비해 ↓ 뒤처진 커밋 수와 ↑ 앞선 커밋 수를 보여 줍니다.

같은 메뉴에 변경된 경로 복사, 저장소 경로 복사와 Finder에서 저장소 보기도 있습니다.

풀을 Fast-forward로 제한한 것은 의도적인 선택입니다. 실제 병합이나 리베이스가 필요하면 Git이 알려 주며 사용자가 터미널에서 결정합니다. 패널이 전략을 대신 고르지 않습니다.

아직 저장소가 아닌 경우

프로젝트 디렉터리에 저장소가 없으면 패널이 저장소 초기화를 제공합니다. 해당 폴더에서 git init을 실행하는 기능이며 초기화 전까지는 다른 작업을 방해하지 않습니다.

에이전트 턴 검토

Git 패널의 **변경 사항 검토…**를 누르면 검토 창이 열립니다.

  • 최근 턴은 선택한 에이전트의 시작 및 종료 스냅샷을 비교하며 작성자와 관계없이 해당 시간의 모든 편집을 포함합니다.
  • 커밋되지 않음은 스테이징 및 미추적 파일을 포함하여 HEAD와 현재 작업 트리를 비교합니다.
  • 전체 브랜치는 선택한 기준 브랜치와의 공통 조상부터 현재 작업 트리까지 커밋 및 미커밋 변경을 비교합니다.

파일과 변경 블록을 선택하세요. 최근 턴의 변경 블록 유지는 검토를 기록하고 변경 블록 되돌리기는 작업 트리를 변경합니다. Git 인덱스는 변경하지 않으며 원본 스냅샷과 결정은 계속 표시됩니다.

파일이나 HEAD가 이후 변경되거나 경로가 안전하지 않은 경우, 에이전트가 작업 중이거나 턴이 겹치면 되돌리기를 거부합니다. 바이너리 및 권한만 변경된 파일은 읽기 전용입니다. 5 MiB 초과 파일은 사용할 수 없습니다. 변경 경로 2,048개, 캡처 내용 25 MiB 또는 시간 제한을 초과한 스냅샷도 사용할 수 없습니다.

스냅샷은 현재 앱 세션에만 유지됩니다. 신뢰할 수 있는 시작 및 완료 이벤트가 필요합니다. Pi, OpenCode, Grok은 기본 통합을 제공합니다. 보호된 프롬프트는 시작을 캡처하지만 완료 이벤트도 필요하며, 없으면 완료된 스냅샷이 없다고 표시합니다.