# Command: git branch (TBD) Crea una rama de trabajo para un issue. **Nunca trabajar directamente en master.** ## Inputs Se necesita el numero del issue y el slug. Si no se proporcionan, preguntar. - `issue_number`: numero de 4 digitos (e.g. `0020`) - `slug`: nombre corto separado por guiones (e.g. `hot-reload`) ## Flujo obligatorio 1. Verificar que estamos en master y limpio: ```bash git branch --show-current git status --short ``` Si no estamos en master, cambiar primero: ```bash git checkout master ``` Si hay cambios sin commitear, **avisar al usuario** y no continuar hasta resolver. 2. Actualizar master desde remoto: ```bash git pull --rebase ``` 3. Crear la rama y cambiar a ella: ```bash git checkout -b issue/- ``` Ejemplo: `git checkout -b issue/0013-hot-reload` 4. Confirmar al usuario: ``` Rama `issue/-` creada desde master actualizado. Puedes empezar a trabajar. Cuando termines, usa `/git-push` para integrar a master. ``` ## Convenciones - **Formato de rama**: `issue/-` (siempre 4 digitos) - **Ramas cortas**: idealmente horas, no dias - **Una rama por issue**: no mezclar issues en la misma rama - **Nunca pushear la rama al remoto**: el push se hace desde master despues del merge - **No rebase interactivo**: si los commits son limpios desde el inicio, no reescribir historia - **No commits WIP**: cada commit en la rama debe ser atomico y con mensaje real (ver convencion en `/git-push`) ## Features multi-issue Para features que no caben en una sola rama, usar sub-issues con sufijo letra: ``` issue/0015a-telegram-types issue/0015b-telegram-client issue/0015c-telegram-listener issue/0015d-telegram-enable ``` Cada sub-rama sigue el mismo flujo: crear → implementar → merge --no-ff → delete. El codigo parcial se protege con **feature flags** en `dev/feature_flags.json` (no con commits WIP).