Skip to content
Back to skills

Manage Git Branches

ASecurity

Crea, rastrea, cambia, sincroniza y limpia ramas de Git. Cubre convenciones de nombres, cambio seguro de ramas con stash, sincronización con el upstream y eliminación de ramas fusionadas. Úsalo al comenzar trabajo en una nueva funcionalidad o corrección de error, al cambiar entre tareas en distintas ramas, al mantener una rama de funcionalidad actualizada con main, o al limpiar ramas tras fusionar pull requests.

  • 31 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added May 29, 2026
ai-agentsgobashgitapi

Works with

  • api

Security analysis

A100/100

Scanned May 29, 2026

npx -y skills add pjt222/agent-almanac --skill manage-git-branches --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Manage Git Branches?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Manage Git Branches
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/pjt222-manage-git-branches/badge)](https://www.skillsdirectory.com/skills/pjt222-manage-git-branches)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: manage-git-branches
description: >
  Crea, rastrea, cambia, sincroniza y limpia ramas de Git. Cubre convenciones
  de nombres, cambio seguro de ramas con stash, sincronización con el upstream
  y eliminación de ramas fusionadas. Úsalo al comenzar trabajo en una nueva
  funcionalidad o corrección de error, al cambiar entre tareas en distintas
  ramas, al mantener una rama de funcionalidad actualizada con main, o al
  limpiar ramas tras fusionar pull requests.
license: MIT
allowed-tools: Read Write Edit Bash Grep Glob
metadata:
  author: Philipp Thoss
  version: "1.0"
  domain: git
  complexity: intermediate
  language: multi
  tags: git, branches, branching-strategy, stash, remote-tracking
locale: es
source_locale: en
source_commit: 6f65f316
translator: claude-opus-4-6
translation_date: 2026-03-16
---

# Gestionar Ramas Git

Crea, cambia, sincroniza y limpia ramas siguiendo convenciones de nombres consistentes.

## Cuándo Usar

- Al comenzar trabajo en una nueva funcionalidad o corrección de error
- Al cambiar entre tareas en distintas ramas
- Al mantener una rama de funcionalidad actualizada con main
- Al limpiar ramas después de fusionar pull requests
- Al listar e inspeccionar ramas

## Entradas

- **Requerido**: Repositorio con al menos un commit
- **Opcional**: Convención de nombres de ramas (por defecto: `tipo/descripcion`)
- **Opcional**: Rama base para nuevas ramas (por defecto: `main`)
- **Opcional**: Nombre del remoto (por defecto: `origin`)

## Procedimiento

### Paso 1: Crear una Rama de Funcionalidad

Usa una convención de nombres consistente:

| Prefijo | Propósito | Ejemplo |
|---------|-----------|---------|
| `feature/` | Nueva funcionalidad | `feature/add-weighted-mean` |
| `fix/` | Corrección de error | `fix/null-pointer-in-parser` |
| `docs/` | Documentación | `docs/update-api-reference` |
| `refactor/` | Reestructuración de código | `refactor/extract-validation` |
| `chore/` | Mantenimiento | `chore/update-dependencies` |
| `test/` | Adición de pruebas | `test/add-edge-case-coverage` |

```bash
# Create and switch to a new branch from main
git checkout -b feature/add-weighted-mean main

# Or using the newer switch command
git switch -c feature/add-weighted-mean main
```

**Esperado:** Se crea la nueva rama y se activa. `git branch` muestra la nueva rama con un asterisco.

**En caso de fallo:** Si la rama base no existe localmente, primero haz fetch: `git fetch origin main && git checkout -b feature/name origin/main`.

### Paso 2: Rastrear Ramas Remotas

Configura el rastreo al subir una nueva rama por primera vez:

```bash
# Push and set upstream tracking
git push -u origin feature/add-weighted-mean

# Check tracking relationship
git branch -vv
```

Para hacer checkout de una rama remota creada por otra persona:

```bash
git fetch origin
git checkout feature/their-branch
# Git auto-creates a local tracking branch
```

**Esperado:** La rama local rastrea la rama remota correspondiente. `git branch -vv` muestra el upstream.

**En caso de fallo:** Si el rastreo automático falla, configúralo manualmente: `git branch --set-upstream-to=origin/feature/name feature/name`.

### Paso 3: Cambiar de Rama de Forma Segura

Antes de cambiar, asegúrate de que el árbol de trabajo esté limpio:

```bash
# Check for uncommitted changes
git status
```

**Si hay cambios**, haz commit o guárdalos con stash:

```bash
# Option 1: Commit work in progress
git add <files>
git commit -m "wip: save progress on validation logic"

# Option 2: Stash changes temporarily
git stash push -m "validation work in progress"

# Switch branches
git checkout main

# Later, restore stashed changes
git checkout feature/add-weighted-mean
git stash pop
```

Listar y gestionar el stash:

```bash
# List all stashes
git stash list

# Apply a specific stash (without removing it)
git stash apply stash@{1}

# Drop a stash
git stash drop stash@{0}
```

**Esperado:** El cambio de rama tiene éxito. El árbol de trabajo refleja el estado de la rama destino. Los cambios guardados con stash son recuperables.

**En caso de fallo:** Si el cambio está bloqueado por cambios sin commit que serían sobreescritos, primero usa stash o haz commit. `git stash` no puede guardar archivos no rastreados a menos que uses `git stash push -u`.

### Paso 4: Sincronizar con el Upstream

Mantén tu rama de funcionalidad actualizada con la rama base:

```bash
# Fetch latest changes
git fetch origin

# Rebase onto latest main (preferred — keeps linear history)
git rebase origin/main

# Or merge main into your branch (creates merge commit)
git merge origin/main
```

**Esperado:** La rama incluye los últimos cambios de main. Sin conflictos, o conflictos resueltos (ver `resolve-git-conflicts`).

**En caso de fallo:** Si el rebase genera conflictos, resuelve cada uno y ejecuta `git rebase --continue`. Si los conflictos son demasiado complejos, aborta con `git rebase --abort` e intenta `git merge origin/main` en su lugar.

### Paso 5: Limpiar Ramas Fusionadas

Después de que los pull requests sean fusionados, elimina las ramas obsoletas:

```bash
# Delete a local branch that has been merged
git branch -d feature/add-weighted-mean

# Delete a local branch (force, even if not merged)
git branch -D feature/abandoned-experiment

# Delete a remote branch
git push origin --delete feature/add-weighted-mean

# Prune remote-tracking references for deleted remote branches
git fetch --prune
```

**Esperado:** Las ramas fusionadas se eliminan local y remotamente. `git branch` muestra solo las ramas activas.

**En caso de fallo:** `git branch -d` se niega a eliminar ramas no fusionadas. Si la rama fue fusionada mediante squash merge en GitHub, Git puede no reconocerla como fusionada. Usa `git branch -D` si tienes la certeza de que el trabajo está preservado.

### Paso 6: Listar e Inspeccionar Ramas

```bash
# List local branches
git branch

# List all branches (local and remote)
git branch -a

# List branches with last commit info
git branch -v

# List branches merged into main
git branch --merged main

# List branches NOT yet merged
git branch --no-merged main

# See which remote branch each local branch tracks
git branch -vv
```

**Esperado:** Vista clara de todas las ramas, su estado y las relaciones de rastreo.

**En caso de fallo:** Si las ramas remotas aparecen desactualizadas, ejecuta `git fetch --prune` para limpiar las referencias a ramas remotas eliminadas.

## Validación

- [ ] Los nombres de las ramas siguen la convención acordada
- [ ] Las ramas de funcionalidad se crean desde la rama base correcta
- [ ] Las ramas locales rastrean sus contrapartes remotas
- [ ] Las ramas fusionadas están limpias (local y remotamente)
- [ ] El árbol de trabajo está limpio antes de cambiar de rama
- [ ] Los cambios guardados con stash no quedan huérfanos

## Errores Comunes

- **Trabajar directamente en main**: Crea siempre una rama de funcionalidad. Hacer commit directamente en main dificulta la creación de PRs y la colaboración.
- **Olvidar hacer fetch antes de crear una rama**: Crear una rama desde un main local desactualizado significa empezar atrasado. Siempre ejecuta `git fetch origin` primero.
- **Ramas de larga duración**: Las ramas de funcionalidad que viven semanas acumulan conflictos de fusión. Sincroniza con frecuencia y mantén las ramas de corta duración.
- **Stashes huérfanos**: `git stash` es almacenamiento temporal. No dependas de él para trabajo a largo plazo. Haz commit o crea una rama en su lugar.
- **Eliminar trabajo no fusionado**: `git branch -D` es destructivo. Verifica con `git log branch-name` antes de forzar la eliminación.
- **No hacer prune**: Las ramas remotas eliminadas en GitHub siguen apareciendo localmente hasta que ejecutas `git fetch --prune`.

## Habilidades Relacionadas

- `commit-changes` - hacer commit del trabajo en las ramas
- `create-pull-request` - abrir PRs desde ramas de funcionalidad
- `resolve-git-conflicts` - resolver conflictos durante la sincronización
- `configure-git-repository` - configuración del repositorio y estrategia de ramas

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…