Cambiar el nombre de las sucursales de forma remota en Git

Resuelto kdt asked hace 13 años • 0 respuestas

Si hay un repositorio al que solo tengo git://acceso (y normalmente solo empuja y tira), ¿hay alguna manera de cambiar el nombre de las ramas en ese repositorio de la misma manera que lo haría localmente git branch -m?

kdt avatar Jan 21 '11 06:01 kdt
Aceptado

Sólo tiene que crear una nueva sucursal local con el nombre deseado, enviarla a su control remoto y luego eliminar la antigua sucursal remota:

$ git branch new-branch-name origin/old-branch-name
$ git push origin --set-upstream new-branch-name
$ git push origin :old-branch-name

Luego, para ver el nombre de la antigua rama, cada cliente del repositorio tendría que hacer:

$ git fetch origin
$ git remote prune origin

NOTA: Si su sucursal anterior es su sucursal principal, debe cambiar la configuración de su sucursal principal. De lo contrario, cuando ejecute $ git push origin :old-branch-name, obtendrá el error "prohibida la eliminación de la rama actual" .

Sylvain Defresne avatar Jan 21 '2011 00:01 Sylvain Defresne

Si realmente solo desea cambiar el nombre de las sucursales de forma remota, sin cambiar el nombre de ninguna sucursal local al mismo tiempo , puede hacerlo con un solo comando:

git push <remote> <remote>/<old_name>:refs/heads/<new_name> :<old_name>

Escribí este script ( git-rename-remote-branch ) que proporciona un atajo útil para hacer lo anterior fácilmente.

Como función de bash:

git-rename-remote-branch() {
  if [ $# -ne 3 ]; then
    echo "Rationale : Rename a branch on the server without checking it out."
    echo "Usage     : ${FUNCNAME[0]} <remote> <old name> <new name>"
    echo "Example   : ${FUNCNAME[0]} origin master release"
    return 1 
  fi

  git push $1 $1/$2\:refs/heads/$3 :$2
}

Para integrar el comentario de @ksrb : lo que esto hace básicamente son dos pulsaciones en un solo comando, primero git push <remote> <remote>/<old_name>:refs/heads/<new_name>para enviar una nueva rama remota basada en la antigua rama de seguimiento remoto y luego git push <remote> :<old_name>para eliminar la antigua rama remota.

sschuberth avatar Jan 23 '2014 07:01 sschuberth

Primer pago en la sucursal cuyo nombre desea cambiar:

git branch -m old_branch new_branch
git push -u origin new_branch

Para eliminar una rama antigua de remote:

git push origin :old_branch
Shashank Hegde avatar Jan 23 '2014 05:01 Shashank Hegde

Seguro. Simplemente cambie el nombre de la rama localmente, inserte la nueva rama y elimine la anterior.

El único problema real es que a otros usuarios del repositorio no se les cambiará el nombre de las ramas de seguimiento locales.

Lily Ballard avatar Jan 20 '2011 23:01 Lily Ballard