# gt: General Translation CLI tool: Ветвление URL: https://generaltranslation.com/ru/docs/cli/branching.mdx --- title: Ветвление description: Отслеживайте переводы отдельно для разных веток Git --- ## Обзор Ветвление позволяет отдельно отслеживать переводы для разных git-веток в проекте. Это полезно, если вы работаете в feature-ветках, где добавляется новый контент или меняется существующий текст, и хотите, чтобы эти переводы оставались изолированными от основной ветки, пока не будет выполнено слияние изменений. Когда ветвление включено, CLI автоматически определяет текущую git-ветку и связывает переводы с ней. Переводы, созданные в feature-ветке, не повлияют на ваши продакшен-переводы, пока вы не выполните слияние. Ветвление — функция GT Cloud и доступно только на платном тарифе. Если вы попытаетесь создать ветку, отличную от ветки по умолчанию, без платного тарифа, CLI вернется к использованию ветки по умолчанию. *** ## Использование Чтобы включить ветвление, используйте флаг `--enable-branching` вместе с командой `translate`: ```bash npx gt translate --enable-branching ``` По умолчанию CLI автоматически определяет текущую ветку Git. Если вместо этого вы хотите указать собственное название ветки: ```bash npx gt translate --enable-branching --branch my-feature-branch ``` *** ## Флаги | Флаг | Описание | | ---------------------------- | ------------------------------------------------------------------------------------------------------ | | `--enable-branching` | Включает ветвление для проекта. Требуется для отслеживания переводов на основе веток. | | `--branch ` | Указывает пользовательское имя ветки вместо автоматического определения из git. | | `--disable-branch-detection` | Отключает автоматическое определение связей между ветками. Использует только ветку, указанную вручную. | *** ## Как это работает Когда ветвление включено, CLI выполняет следующее: 1. **Определяет текущую ветку**: С помощью git определяет, в какой ветке вы сейчас находитесь. 2. **Определяет ветку по умолчанию**: Определяет, какая ветка является веткой по умолчанию (обычно `main` или `master`), проверяя удалённый HEAD. 3. **Отслеживает связи между ветками**: Определяет, для каких веток было выполнено слияние с текущей веткой (входящие ветки), а также ветку, от которой была создана текущая ветка (родительскую ветку). 4. **Связывает переводы с ветками**: Все переводы помечаются текущей веткой, чтобы хранить их отдельно от переводов в других ветках. 5. **Наследует переводы из родительских веток**: Когда вы создаёте новую ветку, переводы автоматически наследуются из родительской ветки, поэтому их не нужно переводить повторно и с вас не списывается плата дважды. ### Наследование переводов При работе в feature-ветке CLI отслеживает: * **Входящие ветки**: ветки, которые были слиты с вашей текущей веткой. Это позволяет учитывать переводы из уже слитых веток. * **Исходная ветка**: ветка, от которой была создана текущая ветка (обычно это ветка по умолчанию). Благодаря этому feature-ветка наследует существующие переводы. Это означает, что, когда вы создаёте новую feature-ветку от `main`, она получает доступ ко всем существующим переводам из `main`. Все новые переводы, которые вы создаёте, будут связаны с вашей feature-веткой, пока она не будет слита. После слияния feature-ветки обратно в `main` переводы из feature-ветки автоматически переносятся в `main`. *** ## Конфигурация Параметры ветвления можно настроить в файле `gt.config.json`: ```json title="gt.config.json" { "branchOptions": { "enabled": true, "currentBranch": "my-feature-branch", "autoDetectBranches": true, "remoteName": "origin" } } ``` | Свойство | Описание | По умолчанию | | -------------------- | ------------------------------------------------------------------------ | ------------ | | `enabled` | Включить поддержку веток для проекта | `false` | | `currentBranch` | Задать имя текущей ветки вручную (вместо автоопределения) | `undefined` | | `autoDetectBranches` | Автоматически определять связи между ветками (входящие и исходные ветки) | `true` | | `remoteName` | Имя удалённого репозитория, используемое для определения веток | `"origin"` | Флаги CLI имеют приоритет над параметрами в файле конфигурации. Например, `--enable-branching` переопределит `branchOptions.enabled`, а `--disable-branch-detection` — `branchOptions.autoDetectBranches`. *** ## Пример рабочего процесса Вот типичный рабочий процесс с использованием ветвления: 1. **Создайте feature-ветку**: ```bash git checkout -b feature/new-landing-page ``` 2. **Добавьте новый переводимый контент** в свою feature-ветку. 3. **Запустите перевод с включённым ветвлением**: ```bash npx gt translate --enable-branching ``` CLI определит, что вы находитесь в `feature/new-landing-page`, и свяжет все новые переводы с этой веткой. 4. **Продолжайте работу над своей веткой** — все дополнительные переводы останутся в вашей feature-ветке. 5. **Слейте свою feature-ветку** в `main`: ```bash git checkout main git merge feature/new-landing-page ``` 6. **Запустите translate в main**: ```bash npx gt translate --enable-branching ``` CLI обнаружит переводы из `feature/new-landing-page` и включит их в `main`. *** ## Устранение неполадок ### Ветка не определена Если CLI не может определить текущую ветку, вы можете указать её вручную: ```bash npx gt translate --enable-branching --branch my-branch ``` ### Использование нестандартного удалённого репозитория Если ваш Git-репозиторий использует удалённый репозиторий не с именем `origin`, укажите его имя в конфигурации: ```json title="gt.config.json" { "branchOptions": { "remoteName": "upstream" } } ``` или используйте флаг `--remote-name`: ```bash npx gt translate --enable-branching --remote-name upstream ``` ### Отключение определения связей между ветками Если вы хотите использовать только текущую ветку и не отслеживать входящие или родительские ветки: ```bash npx gt translate --enable-branching --branch my-branch --disable-branch-detection ```