# Git и команды (/ru/docs/workspaces/git-and-teams)

Рабочее пространство — это папка текстовых файлов, написанных так, чтобы их можно было держать в Git: один файл на
запрос, одни и те же байты для одного и того же содержимого, ничего личного внутри. Закоммитьте его, отправьте в
репозиторий, и команда работает с теми же запросами, каждый со своими учётными данными.

## Файлы, сделанные для диффов [#files-made-for-diffs]

- **Один файл на запрос.** Изменение запроса меняет один файл. Добавление запроса добавляет один файл.
- **Детерминированность.** Echolot каждый раз записывает одно и то же содержимое одинаково: те же ключи в том же
  порядке, поэтому сохранение без изменений ничего не меняет, а дифф показывает только то, что изменили вы.
- **Читаемость.** Запросы — это TOML; тела лежат рядом со своим запросом отдельными файлами (`create-order.body.json`),
  а запросы GraphQL — как `.graphql`, поэтому диффы получаются в JSON и GraphQL, а не в экранированных строках.
- **Порядок в файле папки.** Порядок объектов в папке — это список в её `_folder.toml`, а не часть имён файлов, поэтому
  перестановка меняет одну строку.
- **Ваши комментарии сохраняются.** Комментарии, которые вы написали в файле вручную (`# why this header`),
  сохраняются, когда Echolot записывает файл: блок комментариев вверху, комментарии над ключом или таблицей и
  комментарии после значения. Комментарий к ключу, которого больше нет, отбрасывается.

Переименование запроса переименовывает его файл, а также файлы тела и скриптов рядом с ним. Переименование окружения
сохраняет имя его файла.

## Что коммитить [#what-to-commit]

Коммитьте всю папку рабочего пространства. Игнорировать в ней нечего: Echolot никогда не пишет в неё секретные
значения, историю, тела ответов и ваши личные настройки.

| В рабочем пространстве (общее) | Только на вашем Mac (не общее) |
| --- | --- |
| Запросы, папки, их порядок, документация, авторизация и скрипты | Секретные значения, в связке ключей |
| Переменные и их несекретные значения | Глобальные переменные |
| Окружения и то, какие из них защищены | Какое окружение активно |
| MCP-серверы, спецификации, моки, сценарии | История и тела ответов |
| Правила агентов, прокси и сертификаты рабочего пространства | Расположение областей и другие настройки приложения |
| Разговоры с Ассистентом, которыми вы решили поделиться | Каким скриптам и правилам агентов вы доверяете |

Не меняйте ID рабочего пространства в `workspace.toml`. По нему Echolot находит секретные значения каждого человека.

<Callout type="warn">
  Значение, введённое прямо в поле, а не через секретную переменную, записывается в файл как есть. Под полями
  авторизации и прокси, которые его содержат, Echolot предупреждает
  (**Сохраняется открытым текстом в файле рабочего пространства.**); нажмите **Переместить в Связку ключей** перед коммитом. См. [секреты](/docs/workspaces/secrets).
</Callout>

## Как начать делиться [#start-sharing]

1. Положите рабочее пространство в репозиторий Git: создайте репозиторий в папке `.echolot` или держите рабочее
   пространство папкой внутри репозитория вашего проекта. Любая папка с `workspace.toml` открывается в Echolot.
2. Закоммитьте и отправьте.
3. Коллеги клонируют репозиторий и открывают рабочее пространство командой **Файл › Открыть рабочее пространство…**.
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» изменён на диске, пока здесь были несохранённые изменения.** «При закрытии вкладки останется только одна версия». Выберите **Оставить мои**, **Взять с диска** или
**Отменить**, чтобы вкладка осталась открытой. Если закрыть окно или выйти, пока конфликт не решён, Echolot сообщит, что
правку не удаётся сохранить, и спросит, прежде чем её отбросить, так что ни одна версия не пропадёт без вашего
согласия.

### Конфликты слияния [#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, [экспортируйте](/docs/workspaces/exporting) его как
**Рабочее пространство Echolot**. Копия получает новый ID, поэтому её секреты отделены от ваших, а секретные значения в
неё никогда не записываются.

Копирование папки рабочего пространства в Finder сохраняет её ID. На одном и том же Mac копия и оригинал читают одни и
те же секретные значения из связки ключей.
