Cambiar el nombre de una sucursal en un repositorio Git

295

¿Cómo cambio el nombre de una sucursal existente en un repositorio de Git?

Quiero que la rama actual tenga un nuevo nombre.

Alex
fuente
2
acepte una respuesta @Alex o diga por qué no quiere aceptarla.
Charlie Parker
1
@CharlieParker Probablemente tenga algo que ver con el hecho de que esta era la única pregunta de Alex, y probablemente no ha iniciado sesión desde: "Visto por última vez el 3 de febrero de 11 a las 21:29"
yellow-saint
13
@JB OMG, ¿estás diciendo que algo le pudo haber pasado a él?
Abbood
1
¿Podría aceptarse la respuesta altamente votada a esto?
Steve Chambers

Respuestas:

465

Suponiendo que se encuentra actualmente en la rama que desea cambiar de nombre:

git branch -m newname

Esto está documentado en el manual de git-branch, que puede ver usando

man git-branch

o

git help branch

Específicamente, el comando es

git branch (-m | -M) [<oldbranch>] <newbranch>

donde los parámetros son:

   <oldbranch>
       The name of an existing branch to rename.

   <newbranch>
       The new name for an existing branch. The same restrictions as for <branchname> apply.

<oldbranch> es opcional, si desea cambiar el nombre de la rama actual.

Richard Fearn
fuente
10
O git branch -m other-branch renamed-other-branchsi no lo eres.
mipadi
32
Además, si ha empujado la rama anterior a un control remoto, puede eliminarla con git push origin :branchname. Eso le permitiría empujar el nuevo y eliminar el viejo, esencialmente renombrándolo en el control remoto.
Jonathan
1
@mipadi, crea la nueva rama y no elimina la anterior.
Mohammad Arif
git branch (-m | -M) [<oldbranch>] <newbranch> No funcionó para mí, dando el error de sintaxis.
Mohammad Arif
@MohammedArif With -m, cambia el nombre de la rama anterior, por lo que elimina la anterior.
Richard Fearn
177

Si actualmente está en la sucursal, desea cambiar el nombre:

git branch -m new_name 

Si no:

git branch -m old_name new_name 

Puedes consultar con:

git branch -a

Como puede ver, solo el nombre local cambió ahora, para cambiar el nombre también en el control remoto debe hacer:

git push origin :old_name

Esto elimina la rama, luego cárgala con el nuevo nombre:

git push origin new_name

Fuente: https://web.archive.org/web/20150929104013/http://blog.changecong.com:80/2012/10/rename-a-remote-branch-on-github

javierdvalle
fuente
13
Creo que esta es la respuesta correcta, la respuesta altamente votada por Richard Feam solo cubre el repositorio local, este cubre el remoto.
user1145404
44
De acuerdo con el comentario anterior, esta respuesta fue más completa en mi caso. Además, cuando envié confirmaciones adicionales a la rama remota después de realizar todos los pasos mencionados en esta respuesta, git intentó presionar old_namenuevamente a la rama. Afortunadamente, git también suministra una solución en la línea de comandos: git-branch --unset-upstream. Después de esto, todos los commits enviados fueron a la new_namerama remota.
Hans Roerdinkholder
2
tenga en cuenta que de esta manera perdió la facultad para presionar git pushporque recibió una advertencia que dice Your branch is based on 'old_name, but the upstream is gone.A git push -u origin new_nameresuélvala.
netalex