# gt: General Translation CLI tool: branching
URL: https://generaltranslation.com/it/docs/cli/branching.mdx
---
title: branching
description: Tieni traccia separatamente delle traduzioni per diversi branch Git
---
## Panoramica
Il branching ti consente di gestire separatamente le traduzioni per i diversi branch Git del progetto.
È utile quando lavori su branch di funzionalità che introducono nuovi contenuti o modificano testi esistenti e vuoi mantenere tali traduzioni isolate dal branch principale finché la funzionalità non viene unita.
Quando il branching è abilitato, la CLI rileva automaticamente il branch Git corrente e associa le traduzioni a quel branch.
Le traduzioni create su un branch di funzionalità non influiranno sulle traduzioni di produzione finché non esegui il merge.
Il branching è una funzionalità di GT Cloud e richiede un piano a pagamento. Se provi a creare un branch non predefinito senza un piano a pagamento, la CLI userà automaticamente il branch predefinito.
***
## Utilizzo
Per abilitare il branching, usa il flag `--enable-branching` con il comando `translate`:
```bash
npx gt translate --enable-branching
```
Per impostazione predefinita, la CLI rileva automaticamente la branch Git corrente. Se invece vuoi specificare un nome branch personalizzato:
```bash
npx gt translate --enable-branching --branch my-feature-branch
```
***
## Flag
| Flag | Descrizione |
| ---------------------------- | ---------------------------------------------------------------------------------------------------------------- |
| `--enable-branching` | Abilita il branching per il progetto. Obbligatorio per usare il tracciamento delle traduzioni basato sui branch. |
| `--branch ` | Specifica un nome di branch personalizzato invece di rilevarlo automaticamente da Git. |
| `--disable-branch-detection` | Disabilita il rilevamento automatico delle relazioni tra branch. Usa solo il branch specificato manualmente. |
***
## Come funziona
Quando il branching è abilitato, la CLI esegue queste operazioni:
1. **Rileva la branch corrente**: usa git per determinare su quale branch ti trovi.
2. **Identifica la branch predefinita**: determina quale branch è quella predefinita (di solito `main` o `master`) controllando il riferimento HEAD del repository remoto.
3. **Tiene traccia delle relazioni tra branch**: identifica le branch che sono state unite alla branch corrente (branch in ingresso) e la branch da cui è stata creata la branch corrente (branch padre).
4. **Associa le traduzioni alle branch**: tutte le traduzioni vengono contrassegnate con la branch corrente, così restano separate da quelle delle altre branch.
5. **Eredita le traduzioni dalle branch padre**: quando crei una nuova branch, le traduzioni vengono ereditate automaticamente dalla branch padre, così non devono essere tradotte di nuovo e non ti vengono addebitati costi doppi.
### Ereditarietà delle traduzioni
Quando lavori su un feature branch, la CLI tiene traccia di:
* **Branch in ingresso**: i branch che sono stati uniti al branch corrente. In questo modo, le traduzioni dei branch uniti possono essere incorporate.
* **Branch di origine**: il branch da cui è stato creato il branch corrente (in genere il branch predefinito). In questo modo, il feature branch può ereditare le traduzioni esistenti.
Questo significa che, quando crei un nuovo feature branch a partire da `main`, il tuo branch avrà accesso a tutte le traduzioni già esistenti in `main`. Qualsiasi nuova traduzione che crei sarà associata al feature branch finché non verrà unito.
Dopo aver unito di nuovo il feature branch in `main`, le traduzioni del feature branch vengono incorporate automaticamente in `main`.
***
## Configurazione
Puoi configurare le opzioni di branching nel file `gt.config.json`:
```json title="gt.config.json"
{
"branchOptions": {
"enabled": true,
"currentBranch": "my-feature-branch",
"autoDetectBranches": true,
"remoteName": "origin"
}
}
```
| Proprietà | Descrizione | Predefinito |
| -------------------- | ---------------------------------------------------------------------------------------------------- | ----------- |
| `enabled` | Abilita il branching per il progetto | `false` |
| `currentBranch` | Imposta manualmente il nome del branch corrente (invece di rilevarlo automaticamente) | `undefined` |
| `autoDetectBranches` | Rileva automaticamente le relazioni tra branch (branch in ingresso e branch di origine) | `true` |
| `remoteName` | Il nome del remote Git usato per il rilevamento dei branch | `"origin"` |
I flag della CLI hanno priorità sulle opzioni del file di configurazione. Ad esempio, `--enable-branching` sovrascrive `branchOptions.enabled` e `--disable-branch-detection` sovrascrive `branchOptions.autoDetectBranches`.
***
## Esempio di flusso di lavoro
Ecco un flusso di lavoro tipico con il branching:
1. **Crea un feature branch**:
```bash
git checkout -b feature/new-landing-page
```
2. **Aggiungi nuovi contenuti traducibili** al tuo feature branch.
3. **Traduci con il branching abilitato**:
```bash
npx gt translate --enable-branching
```
La CLI rileva che ti trovi su `feature/new-landing-page` e associa tutte le nuove traduzioni a quel branch.
4. **Continua a iterare sulla funzionalità**: eventuali traduzioni aggiuntive resteranno nel tuo feature branch.
5. **Unisci il tuo feature branch** a `main`:
```bash
git checkout main
git merge feature/new-landing-page
```
6. **Esegui translate su main**:
```bash
npx gt translate --enable-branching
```
La CLI rileva le traduzioni di `feature/new-landing-page` e le incorpora in `main`.
***
## Risoluzione dei problemi
### Branch non rilevato
Se la CLI non riesce a rilevare il branch corrente, puoi specificarlo manualmente:
```bash
npx gt translate --enable-branching --branch my-branch
```
### Utilizzare un remote non standard
Se il remote Git non si chiama `origin`, configura il nome del remote nella configurazione:
```json title="gt.config.json"
{
"branchOptions": {
"remoteName": "upstream"
}
}
```
oppure utilizza il flag `--remote-name`:
```bash
npx gt translate --enable-branching --remote-name upstream
```
### Disabilitare il rilevamento delle relazioni tra branch
Se vuoi usare solo il branch corrente senza tenere traccia dei branch in entrata o del branch padre:
```bash
npx gt translate --enable-branching --branch my-branch --disable-branch-detection
```