# Git과 팀 (/ko/docs/workspaces/git-and-teams)

작업 공간은 Git에 보관하도록 작성된 텍스트 파일의 폴더입니다. 요청마다 파일 하나, 같은 내용이면 같은 바이트, 비공개 내용은 없습니다. 커밋하고 푸시하면
팀이 같은 요청으로 작업하며, 각자 자신의 자격 증명을 사용합니다.

## diff를 위해 만든 파일 [#files-made-for-diffs]

- **요청마다 파일 하나.** 요청을 바꾸면 파일 하나가 바뀝니다. 요청을 추가하면 파일 하나가 추가됩니다.
- **결정적.** Echolot은 같은 내용을 매번 같은 방식으로 기록합니다. 같은 키가 같은 순서로 놓이므로 변경 없이 저장하면 아무것도 바뀌지 않고, diff에는 사용자가
  바꾼 것만 나타납니다.
- **읽기 쉬움.** 요청은 TOML이며, 본문은 요청 옆에 별도 파일(`create-order.body.json`)로, GraphQL 쿼리는 `.graphql`로 놓이므로 이스케이프된
  문자열이 아니라 JSON과 GraphQL로 diff가 나옵니다.
- **순서는 폴더 파일에.** 폴더 안 항목의 순서는 파일 이름이 아니라 `_folder.toml`의 목록이므로 순서를 바꾸면 한 줄만 바뀝니다.
- **주석은 그대로 남습니다.** 파일에 직접 쓴 주석(`# why this header`)은 Echolot이 저장할 때 유지됩니다. 맨 위의 주석 블록, 키나 테이블 위의
  주석, 값 뒤의 주석이 해당됩니다. 더 이상 존재하지 않는 키에 달린 주석은 삭제됩니다.

요청의 이름을 바꾸면 파일 이름과 그 옆의 본문 및 스크립트 파일 이름도 바뀝니다. 환경의 이름을 바꾸면 파일 이름은 유지됩니다.

## 커밋할 것 [#what-to-commit]

작업 공간 폴더 전체를 커밋하세요. 그 안에는 무시할 것이 없습니다. Echolot은 비밀 값, 기록, 응답 본문, 개인 설정을 그 안에 절대 기록하지 않습니다.

| 작업 공간에 있음(공유됨) | 이 Mac에만 있음(공유되지 않음) |
| --- | --- |
| 요청, 폴더, 순서, 문서, 인증, 스크립트 | 키체인에 있는 비밀 값 |
| 변수와 그 비밀이 아닌 값 | 전역 변수 |
| 환경과 보호된 환경 여부 | 활성 환경 |
| MCP 서버, 명세, 모의 서버, 플로 | 기록과 응답 본문 |
| 작업 공간의 에이전트 규칙, 프록시, 인증서 | 패널 레이아웃과 기타 앱 설정 |
| 공유하기로 선택한 어시스턴트 대화 | 신뢰한 스크립트와 에이전트 규칙 |

`workspace.toml`의 작업 공간 ID는 그대로 두세요. Echolot은 이 ID로 각 사용자의 비밀 값을 찾습니다.

<Callout type="warn">
  비밀 변수를 거치지 않고 필드에 직접 입력한 값은 그대로 파일에 기록됩니다. Echolot은 그런 값이 들어 있는 인증과 프록시 필드 아래에
  (**작업 공간 파일에 일반 텍스트로 저장됩니다.**) 경고를 표시합니다. 커밋하기 전에 **키체인으로 이동**을 클릭하세요.
  [비밀 값](/docs/workspaces/secrets)을 참조하세요.
</Callout>

## 공유 시작하기 [#start-sharing]

1. 작업 공간을 Git 저장소에 넣습니다. `.echolot` 폴더 안에 저장소를 만들거나, 작업 공간을 프로젝트 저장소 안의 폴더로 둡니다. `workspace.toml`이 있는
   폴더는 모두 Echolot에서 열립니다.
2. 커밋하고 푸시합니다.
3. 팀원이 저장소를 클론하고 <strong>파일 › 작업 공간 열기…</strong>로 작업 공간을 엽니다.
4. 팀원은 각자 자신의 Mac에서 비밀 값을 한 번 설정합니다. [환경](/docs/workspaces/environments) 페이지에는 각 비밀 값에 **이 Mac에 설정되지 않음**이
   표시됩니다.

명령줄 도구도 같은 파일을 읽으므로 CI가 커밋한 요청을 실행합니다. [CI에서 테스트하기](/docs/tutorials/test-in-ci)를 참조하세요.

## Git, 편집기, 에이전트가 만든 변경 [#changes-from-git-editors-and-agents]

Echolot은 작업 공간 폴더를 감시합니다. Echolot 밖에서 파일이 바뀌면(`git pull`, 브랜치 전환, 편집기, 에이전트) 윈도우가 다시 불러옵니다.
사이드바, 열려 있는 요청, 환경, 명세, 모의 서버, 플로가 즉시 따라갑니다.

저장되지 않은 편집이 없는 열린 요청은 질문 없이 새 버전을 받습니다.

탭에 저장되지 않은 편집이 있는 요청은 Echolot이 어느 쪽도 고르지 않습니다. 요청 위에 막대가 나타나 **디스크에서 이 요청이 변경되었습니다**,
“저장하지 않은 편집 내용이 있는 동안 다른 앱이나 Git이 파일을 변경했습니다.”라고 알려 줍니다.

- **내 변경 사항 유지**는 탭의 편집 내용을 유지하고 파일에 덮어씁니다.
- **디스크 버전 사용**은 탭의 편집 내용을 버리고 디스크의 파일을 불러옵니다.

선택하기 전까지 Echolot은 그 요청을 저장하지 않으므로 디스크의 변경은 그대로 남습니다.

### 충돌 중에 탭 닫기 [#closing-a-tab-during-a-conflict]

선택하기 전에 탭을 닫으면 Echolot이 **저장하지 않은 편집 내용이 있는 동안 디스크에서 “Create order”이(가) 변경되었습니다**라고 묻고,
“탭을 닫으면 한 가지 버전만 남습니다.”라고 안내합니다. **내 변경 사항 유지**, **디스크 버전 사용**, 또는 탭을 열어 두는 **취소**를 선택하세요.
충돌이 해결되지 않은 상태에서 윈도우를 닫거나 종료하면 편집을 저장할 수 없다고 알려 주고 버리기 전에 먼저 묻습니다. 어느 쪽 버전도 사용자의 동의 없이
사라지지 않습니다.

### 병합 충돌 [#merge-conflicts]

Git 병합 충돌은 다른 텍스트 파일과 마찬가지로 편집기나 Git 도구에서 해결하세요. 충돌 표시가 남아 있는 파일은 올바른 TOML이 아닙니다. 파일을 읽을 수
없는 동안 열려 있는 윈도우는 이전에 읽은 내용을 유지하며, 작업 공간을 새로 열면 환영 윈도우에 해당 파일의 이름과 함께 “…을(를) 읽을 수 없었습니다”라는
메시지가 표시되며 실패합니다. 파일을 고치면 작업 공간을 다시 읽을 수 있습니다.

## Git에서 온 스크립트와 에이전트 규칙 [#scripts-and-agent-rules-from-git]

스크립트는 요청을 보내고 작업 공간의 변수를 읽을 수 있으므로, Echolot은 사용자가 이 Mac에서 신뢰한 스크립트만 실행합니다. Echolot에서 직접 작성한
스크립트는 신뢰됩니다. Git, 가져오기, 다른 편집기를 통해 들어왔거나 거기서 코드가 바뀐 스크립트에는 내용을 읽고 **스크립트 신뢰**를 클릭할 때까지
**Echolot 외부에서 온 스크립트입니다**라고 표시됩니다. [스크립트와 테스트](/docs/requests/scripts-and-tests)를 참조하세요.

작업 공간의 에이전트 규칙도 마찬가지입니다. 파일에서 온 규칙 중 에이전트가 할 수 있는 일을 더 제한하는 규칙은 즉시 적용되고, 더 느슨하게 하는 규칙은
사용자가 이 Mac에서 그 버전을 신뢰한 뒤에만 적용됩니다. [에이전트](/docs/ai/agents)를 참조하세요.

## Git 없이 공유 [#sharing-without-git]

Git을 쓰지 않는 사람에게 작업 공간을 넘기려면 **Echolot 작업 공간**으로 [내보내세요](/docs/workspaces/exporting). 사본은 새 ID를 받으므로 비밀 값이
사용자의 것과 분리되며, 비밀 값은 사본에 절대 기록되지 않습니다.

Finder에서 작업 공간 폴더를 복사하면 ID가 그대로 유지됩니다. 같은 Mac에서는 사본과 원본이 키체인에서 같은 비밀 값을 읽습니다.
