Git — Gestión de ramas
Ver ramas
| Descripción | Comando |
|---|---|
| Ver ramas locales | git branch |
| Ver ramas locales con último commit | git branch -v |
| Ver ramas locales y remotas | git branch -va |
| Ver solo ramas remotas | git branch -r |
| Ver qué ramas están fusionadas en master | git branch --merged master |
Cambiar de rama
Forma clásica:
git checkout nombre-ramaForma moderna (recomendada desde Git 2.23):
git switch nombre-ramagit switch es más explícito y seguro que checkout para operaciones con ramas — no mezcla responsabilidades con la restauración de archivos.
Crear ramas
| Descripción | Checkout | Switch |
|---|---|---|
| Crear y cambiar a una nueva rama | git checkout -b nombre-rama | git switch -c nombre-rama |
| Crear rama desde otra rama | git checkout -b nueva origen | git switch -c nueva origen |
| Crear rama desde un commit | git checkout -b nueva abc1234 | git switch -c nueva abc1234 |
Sincronizar con el remoto
# Traer cambios del remoto sin fusionar
git fetch origin
# Traer cambios del remoto y fusionar en la rama actual
git pull origin master
# Limpiar referencias a ramas remotas ya eliminadas
git fetch --prune
# Limpiar referencias obsoletas manualmente
git branch -rd origin/nombre-ramaSubir ramas al remoto
# Subir una rama y establecer seguimiento
git push -u origin nombre-rama
# Subir varias ramas a la vez
git push origin rama-1 rama-2 rama-3Fusionar ramas (merge)
# Situarse en master primero
git checkout master # o: git switch master
# Fusionar con commit de merge explícito (recomendado)
git merge --no-ff nombre-rama -m "Merge nombre-rama"--no-ff crea siempre un commit de merge aunque sea posible hacer fast-forward. Deja el historial más legible.
Flujo completo: merge + borrar rama + push
git checkout master
git merge --no-ff <rama>
git branch -d <rama> # local (-d es seguro, avisa si no está mergeada)
git push origin --delete <rama> # remota
git push origin masterComprobar si una rama está mergeada
# Listado de ramas ya mergeadas en master
git branch --merged master
# Comprobación fiable con merge-base
git merge-base --is-ancestor <rama> master && echo "merged" || echo "NOT merged"Eliminar ramas
# Eliminar rama local (solo si está fusionada)
git branch -d nombre-rama
# Eliminar rama local forzado
git branch -D nombre-rama
# Eliminar rama en el remoto
git push origin --delete nombre-ramaArchivar ramas antiguas
Útil para ramas de máquinas o configuraciones antiguas que no quieres fusionar pero tampoco perder.
# Crear tag de archivo apuntando a la rama remota
git tag archive/nombre origin/nombre
# Subir el tag al remoto
git push origin archive/nombre
# Eliminar la rama remota (ya está preservada en el tag)
git push origin --delete nombrePara recuperar el contenido en el futuro:
git checkout -b nombre archive/nombre
# o:
git switch -c nombre archive/nombreDenominación de ramas
feature/descripcion-corta
fix/descripcion-corta
feat/descripcion-corta
hotfix/descripcion-corta
docs/descripcion-corta
archive/nombre-maquinaFlujo habitual entre dos máquinas
# Máquina A — subir ramas para validar en otra máquina
git push origin rama-1 rama-2
# Máquina B — traer y listar
git fetch origin
git branch -va
# Máquina B — cambiar a una rama y probarla
git switch rama-1
# Máquina A — si la rama está validada, fusionar y limpiar
git switch master
git merge --no-ff rama-1 -m "Merge rama-1"
git push origin master
git branch -d rama-1
git push origin --delete rama-1