# gt: General Translation CLI tool: ブランチ機能
URL: https://generaltranslation.com/ja/docs/cli/branching.mdx
---
title: ブランチ機能
description: 異なるGitブランチごとに翻訳を個別に追跡します
---
## 概要
ブランチ機能を使うと、プロジェクト内の異なる git ブランチごとに翻訳を個別に管理できます。
これは、新しいコンテンツを追加したり既存のテキストを変更したりするフィーチャーブランチで作業していて、その機能がマージされるまで翻訳をメインブランチから分離しておきたい場合に便利です。
ブランチ機能を有効にすると、CLI は現在の git ブランチを自動的に検出し、そのブランチに翻訳を関連付けます。
フィーチャーブランチで作成した翻訳は、マージするまで本番環境の翻訳に影響しません。
ブランチ機能は GT Cloud の機能であり、有料プランが必要です。有料プランなしでデフォルト以外のブランチを作成しようとすると、CLI はデフォルトブランチを使用するようフォールバックします。
***
## 使用方法
ブランチ機能を有効にするには、`translate` コマンドに `--enable-branching` フラグを指定します。
```bash
npx gt translate --enable-branching
```
デフォルトでは、CLI は現在の Git ブランチを自動的に検出します。代わりに任意のブランチ名を指定する場合は、次のようにします。
```bash
npx gt translate --enable-branching --branch my-feature-branch
```
***
## フラグ
| Flag | 説明 |
| ---------------------------- | ------------------------------------------------- |
| `--enable-branching` | プロジェクトでブランチ機能を有効にします。ブランチベースの翻訳トラッキングを使用するには必須です。 |
| `--branch ` | Git から自動検出する代わりに、任意のブランチ名を指定します。 |
| `--disable-branch-detection` | ブランチ間の関係の自動検出を無効にします。手動で指定したブランチのみを使用します。 |
***
## 仕組み
ブランチ機能が有効な場合、CLI は次の処理を行います。
1. **現在のブランチを検出**: git を使用して、現在どのブランチ上にいるかを特定します。
2. **デフォルトブランチを特定**: リモートの HEAD 参照を確認し、どのブランチがデフォルトか (通常は `main` または `master`) を判定します。
3. **ブランチ間の関係を追跡**: 現在のブランチにマージされたブランチ (取り込み元ブランチ) と、現在のブランチのチェックアウト元のブランチ (親ブランチ) を特定します。
4. **翻訳をブランチに関連付け**: すべての翻訳は現在のブランチに紐付けられ、他のブランチの翻訳とは分けて管理されます。
5. **親ブランチから翻訳を継承**: 新しいブランチを作成すると、翻訳は親ブランチから自動的に継承されるため、再翻訳は行われず、二重に課金されることもありません。
### 翻訳の継承
フィーチャーブランチで作業している場合、CLI は次の情報を追跡します。
* **取り込み元ブランチ**: 現在のブランチにマージされたブランチです。これにより、マージ済みブランチの翻訳を取り込めます。
* **チェックアウト元ブランチ**: 現在のブランチの作成元になったブランチです (通常はデフォルトブランチ) 。これにより、フィーチャーブランチは既存の翻訳を継承できます。
つまり、`main` から新しいフィーチャーブランチを作成すると、そのブランチは `main` にある既存の翻訳をすべて利用できます。新しく作成した翻訳は、マージされるまでそのフィーチャーブランチに関連付けられます。
フィーチャーブランチを `main` にマージすると、そのフィーチャーブランチの翻訳は自動的に `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` | ブランチ検出に使用する Git リモート名 | `"origin"` |
CLI フラグは設定ファイルのオプションより優先されます。たとえば、`--enable-branching` は `branchOptions.enabled` を上書きし、`--disable-branch-detection` は `branchOptions.autoDetectBranches` を上書きします。
***
## ワークフローの例
以下は、ブランチを使う一般的なワークフローです。
1. **フィーチャーブランチを作成します**:
```bash
git checkout -b feature/new-landing-page
```
2. **翻訳対象の新しいコンテンツ**をフィーチャーブランチに追加します。
3. **ブランチ機能を有効にして translate を実行します**:
```bash
npx gt translate --enable-branching
```
CLI は現在のブランチが `feature/new-landing-page` であることを検出し、新しい翻訳をすべてそのブランチに関連付けます。
4. **フィーチャーの開発を進めます** - 追加した翻訳は引き続きフィーチャーブランチに保持されます。
5. **フィーチャーブランチを `main` にマージします**:
```bash
git checkout main
git merge feature/new-landing-page
```
6. **`main` で translate を実行します**:
```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
```