Renombrar una rama en Git: local, remota y la rama por defecto de GitHub | We.Inc
Genera los comandos exactos para renombrar una rama de Git en local, subir el nuevo nombre, borrar la rama remota antigua y corregir el seguimiento del upstream, además de renombrar main en GitHub.
Para renombrar la rama en la que estás, ejecuta git branch -m nuevo-nombre. Para otra rama, ejecuta git branch -m nombre-antiguo nuevo-nombre. Git no puede renombrar una rama en un remoto, así que sube el nuevo nombre con git push -u origin nuevo-nombre y luego borra el antiguo con git push origin --delete nombre-antiguo.
Comandos para renombrar según la situación
Situación
Comando
Renombrar la rama actual
git branch -m new-name
Renombrar otra rama
git branch -m old-name new-name
Sobrescribir un nombre existente
git branch -M old-name new-name
Publicar el nuevo nombre y seguirlo
git push -u origin new-name
Quitar el nombre antiguo del remoto
git push origin --delete old-name
Arreglar un clon después de que otra persona la renombrara
git branch -u origin/new-name new-name
Renombrar en local es un solo comando; el remoto es donde la gente se atasca, porque una rama remota no se puede renombrar en el sitio, solo sustituir. Rellena abajo el nombre antiguo y el nuevo para obtener los comandos de tu caso, incluido lo que deben ejecutar después tus compañeros y los pasos extra cuando la rama es la rama por defecto de GitHub.
Introduce el nombre antiguo, el nuevo y el remoto, normalmente origin.
Marca si estás en esa rama y si ya existe en el remoto.
Ejecuta los comandos en orden; el generador añade el push, el borrado y la corrección del upstream solo cuando corresponden.
Envía el bloque para compañeros a cualquiera que tenga un clon.
Sube el nuevo nombre antes de borrar el antiguo, para que una pull request abierta o una ejecución de CI nunca vean desaparecer la rama por completo.
En GitHub, renombrar desde la página de ramas es mejor para ramas compartidas: redirige las pull requests abiertas y las URL antiguas por ti.
Busca el nombre antiguo en tus workflows de CI, ajustes de despliegue y scripts. GitHub indica que los workflows de Actions que lo mencionan no se actualizan.
git branch -m también renombra el reflog de la rama, así que su historial local de movimientos sigue al nuevo nombre.
Preguntas frecuentes
¿Puedo renombrar una rama remota directamente?
No con git a secas. Subes la rama con el nuevo nombre y borras el antiguo. La interfaz web de GitHub sí puede renombrar una rama en el servidor, lo que además mantiene funcionando las pull requests y los enlaces.
¿Cuál es la diferencia entre -m y -M?
-m se niega si ya existe una rama con el nuevo nombre. -M es la forma corta de --move --force y la sustituye. Ninguno de los dos renombra una rama que esté activa en otro worktree del mismo repositorio.
¿Cómo renombro master a main en GitHub?
En el repositorio en GitHub, abre Branches, elige renombrar en master y escribe main. Renombrar la rama por defecto requiere acceso de administrador. Después, todo el mundo ejecuta los cuatro comandos que muestra GitHub: renombrar en local, hacer fetch, definir el upstream y actualizar el HEAD de origin.
¿Por qué git push sigue yendo al nombre antiguo de la rama?
La rama renombrada sigue apuntando al upstream antiguo. Haz push con -u una vez, o ejecuta git branch -u origin/new-name, y los siguientes push y pull usarán el nuevo nombre.
Qué actualiza GitHub cuando renombras allí
GitHub redirige las URL web que contienen el nombre antiguo, pasa la protección de rama al nuevo nombre y redirige las pull requests abiertas y los borradores de release basados en ella. Las URL de archivos raw no se redirigen.
Quien tiene permiso de escritura puede renombrar ramas normales; renombrar la rama por defecto o una rama protegida requiere permisos de administrador, y los rulesets de la organización pueden restringirlo aún más.
Cómo evitar nombres que fallen más adelante
Limítate a minúsculas, dígitos, guiones y barras para agrupar, como fix/login-timeout. Git rechaza nombres con espacios, dos puntos seguidos, un punto o una barra al final, un guion al principio o cualquiera de los caracteres ~ ^ : ? * [ y la barra invertida.
Renombrado completo, de principio a fin
Renombrar en todas partes una rama ya subida
Renombra en local, publica el nuevo nombre con seguimiento y luego elimina la rama remota antigua.
Qué ejecutan tus compañeros tras renombrar en GitHub
Son los pasos que indica GitHub para actualizar un clon existente, con la limpieza opcional de ramas remotas obsoletas.
Generador de comandos para renombrar
Nombre actual de la rama
Nuevo nombre de la rama
Remoto
Estoy en esta rama ahora mismo
La rama existe en el remoto
Tus comandos
Lo que ejecutan tus compañeros
No hay nada que decir a tus compañeros: la rama nunca se subió.
Ese no es un nombre de rama válido. Consulta las reglas de nombres más abajo en la página.