Sinopsis
git branch [-a] [-r] [-v] [-d <name>] [-m <old> <new>] [<name> [<start-point>]]
Descripción
El comando git branch gestiona branches. Sin argumentos lista los branches locales y marca el actual con un asterisco. Dado un nombre, crea un nuevo branch que apunta al HEAD actual (o a un punto de inicio especificado). También puede eliminar, renombrar e inspeccionar branches. Un branch en Git es un puntero ligero y movible a un commit: crear uno es esencialmente gratis, por lo que los flujos de Git fomentan muchos branches de corta duración.
Nota: git branch <name> crea un branch pero no cambia a él. Para crear y cambiar en un paso, usa git switch -c <name> o git checkout -b <name>. El comportamiento --track hace que un nuevo branch siga a un branch remoto para los predeterminados de push/pull.
En el uso diario, git branch se integra con alias de shell y herramientas. Para depurar, ejecuta con GIT_TRACE=1.
Entender cómo git branch interactúa con el resto del modelo de datos de Git rinde dividendos.
Opciones comunes
| Opción | Descripción |
|---|---|
-a, --all | Lista tanto branches locales como de seguimiento remoto. |
-r, --remotes | Lista solo branches de seguimiento remoto. |
-v, --verbose | Muestra el último commit en cada branch. |
-d <name> | Elimina un branch totalmente mergeado. |
-D <name> | Fuerza la eliminación de un branch incluso si no está mergeado. |
-m <old> <new> | Renombra un branch. |
--merged / --no-merged | Filtra branches que están (no están) mergeados en HEAD. |
--set-upstream-to=<remote>/<branch> | Configura el seguimiento del branch actual. |
Ejemplos
git branch
# Lista branches locales
git branch feature/login
# Crea un nuevo branch desde el HEAD actual
git branch -d old-feature
# Elimina un branch mergeado
git branch -m main trunk
# Renombra el branch local main a trunk
git branch -a -v
# Lista todos los branches (local + remoto) con últimos commits
Errores comunes
Usar -D para forzar la eliminación de un branch puede perder commits no mergeados para siempre (bueno, hasta que git reflog expire). Intenta siempre -d primero. Renombrar el branch actual con -m funciona sin argumentos: git branch -m new-name renombra en lo que estés. Olvidar establecer el seguimiento upstream tras crear un branch significa que git push puede necesitar argumentos explícitos la primera vez.
Comandos relacionados
git switch, git checkout, git merge, git push